ionic 2 和提供程序中的 nativeStorage
nativeStorage in ionic 2 and providers
我想在本地存储中存储一个令牌,如果它存在,稍微调整一下,然后在页面上使用它。
使用 ionic 1 可以很容易地创建一个服务,该服务仅从本地存储中获取数据,对其进行更改并返回,以便主要组件可以按需要处理它。
但是现在 NativeStorage.getItem() returns 一个承诺,我如何强制服务完全完成获取项目,并在将调整后的令牌作为数据返回之前完成我的其他更改?
我希望能够做到:
export class Test{
let tok = "";
constructor(tokenService:TokenService){
this.tok = tokenService.getToken()
}
ngOnInit(){
alert(this.tok + " Is your token");
}
}
并且在 tokenService 中,提供者有:
getToken(){
// this doesn't work now because it will return undef for modified_token not waiting for the promise to finish
let modified_token:string;
NativeStorage.getItem('token').then(
data=>{
modified_token = data + 'modified';
}
);
return modified_token
}
我是否只需要在 promise 完成时调用另一个主要函数?
喜欢:
getToken(){
return NativeStorage.getItem('token')
}
而不是在 ngOnInit 的构造函数中有:
ngOnInit(){
tokenService.getToken().then(
data => {
let modified_token = data + "modified";
mainAction(modified_token);
})
}
mainAction() 还有我想做的其他事情吗?
Do i just have to have another main function that is called when the
promise is finished?
这是一种方法。您还可以通过返回一个新的 Promise 将所有相关逻辑保留在 getToken
方法中:
getToken(){
return NativeStorage.getItem('token').then(data => return data + 'modified')
}
然后
ngOnInit(){
tokenService.getToken().then(
modifiedToken => {
mainAction(modifiedToken);
})
}
更新:根据@SamMason 评论更新了答案。
我想在本地存储中存储一个令牌,如果它存在,稍微调整一下,然后在页面上使用它。
使用 ionic 1 可以很容易地创建一个服务,该服务仅从本地存储中获取数据,对其进行更改并返回,以便主要组件可以按需要处理它。
但是现在 NativeStorage.getItem() returns 一个承诺,我如何强制服务完全完成获取项目,并在将调整后的令牌作为数据返回之前完成我的其他更改?
我希望能够做到:
export class Test{
let tok = "";
constructor(tokenService:TokenService){
this.tok = tokenService.getToken()
}
ngOnInit(){
alert(this.tok + " Is your token");
}
}
并且在 tokenService 中,提供者有:
getToken(){
// this doesn't work now because it will return undef for modified_token not waiting for the promise to finish
let modified_token:string;
NativeStorage.getItem('token').then(
data=>{
modified_token = data + 'modified';
}
);
return modified_token
}
我是否只需要在 promise 完成时调用另一个主要函数?
喜欢:
getToken(){
return NativeStorage.getItem('token')
}
而不是在 ngOnInit 的构造函数中有:
ngOnInit(){
tokenService.getToken().then(
data => {
let modified_token = data + "modified";
mainAction(modified_token);
})
}
mainAction() 还有我想做的其他事情吗?
Do i just have to have another main function that is called when the promise is finished?
这是一种方法。您还可以通过返回一个新的 Promise 将所有相关逻辑保留在 getToken
方法中:
getToken(){
return NativeStorage.getItem('token').then(data => return data + 'modified')
}
然后
ngOnInit(){
tokenService.getToken().then(
modifiedToken => {
mainAction(modifiedToken);
})
}
更新:根据@SamMason 评论更新了答案。