我遇到一种情况,我需要从Ionic 2应用程序中的存储中获取一条数据,然后使用该数据创建HTTP请求。我遇到的问题是SqlStorage方法返回Promise,而http meth返回一个observables。我必须执行以下操作才能使其正常工作:
getToken() {
return this.storage.get('token').then((token) => {
this.token = token;
return token;
});
}
loadStuff(){
return this.tokenService.getToken().then(token => {
return this.http.get("https://www.urltodatasource.com/api/v1/Endpoint?access_token="+token).map(res => res.json());
});
}
然后执行以下操作使其正常工作:
this.tokenService.loadStuff().then(observable => {
observable.subscribe(data => {
this.storage.set('stuff', data);
return data;
});
})
一般来说,我对Angular和Ionic还是陌生的,所以我觉得有一种更好的方法可以完成我想做的事情,但是我不知道怎么做。另外,关于可观测对象的所有可用资源很快就变得非常复杂。
任何人都可以阐明如何做得更好吗?谢谢!
最佳答案
您可以执行以下操作:
您的代码如下
getToken() {
return this.storage.get('token').then((token) => {
this.token = token;
return token;
});
}
更改为
getToken: Observable<any> =
Observable.fromPromise(this.storage.get('token').then(token => {
//maybe some processing logic like JSON.parse(token)
return token;
}));
然后,您可以像其他任何可观察对象一样在组件中使用它。
this.serviceClass.getToken.subscribe(token => {
//whatever you want to with the token
});
关于angularjs - ionic 2/Angular 2 promise 返回可观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37994343/