angularjs - ionic 2/Angular 2 promise 返回可观察

标签 angularjs ionic-framework observable ionic2 es6-promise

我遇到一种情况,我需要从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/

相关文章:

javascript - Controller 中的 Angular 函数在 promise 后没有被调用

javascript - Ionic Storage get 在重新加载页面之前不起作用

ionic-framework - 如何更改 ionic 框架中的后退按钮标题?

angular - 如何使用异步管道遍历对象中的数组

angular - 响应式(Reactive)表单 valueChanges observable 重置表单值

javascript - 我如何添加到angularjs中的现有对象

javascript - 单击外部时如何禁用弹出窗口的隐藏?

javascript - Angular 验证消息不适用于 ng-show 和两个输入

ionic-framework - navController.push 无法在release-apk 中打开下一页

javascript - Angular 中嵌套订阅的错误