angular – 将Promise转换为RxJs Observable

前端之家收集整理的这篇文章主要介绍了angular – 将Promise转换为RxJs Observable前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以帮助将此承诺转换为RxJs可观察对象吗?
我想从本地存储中获取令牌,如果出现错误,应该使用订阅了observable的观察者来捕获它.以下是Promise的现有解决方案:

getToken(): Promise<any> {
    return new Promise<any>((resolve,reject) => {
      resolve(JSON.parse(localStorage.getItem('currentUser')).token);
      reject();
    });
  }

和订户是:

this.authService.getToken().then(token => {
      this.token = token;
    }).catch(() => console.log('Error! cannot get token'));

我尝试使用以下方法将其转换为Observable:

getToken2(): Rx.Observable<number> {
    return Rx.Observable.create(obs => {
      obs.next(JSON.parse(localStorage.getItem('currentUser')).token);
       obs.error('Error! cannot get token');
    });
  }

this.authService.getToken2()
  .subscribe((token) => console.log(token),(er) => console.log(er));

但问题是当从localstorage获取令牌时发生错误时,RxJs observable不会通过obs.next()捕获它.就好像它已成功解析.Promise通过拒绝方法成功捕获它.可以有人给出一个想法怎么了?谢谢

解决方法

你不需要做所有这些,只需使用 Observable.fromPromise()

Observable.fromPromise(this.authService.getToken())
  ...
  .subscribe(...)

如果你想在Observable链中的任何地方使用Promise,你甚至不需要将它自动转换为Observable.

https://medium.com/@benlesh/rxjs-observable-interop-with-promises-and-async-await-bebb05306875

猜你在找的Angularjs相关文章