angular – 将Promise转换为RxJs Observable
发布时间:2020-12-17 17:29:13 所属栏目:安全 来源:网络整理
导读:有人可以帮助将此承诺转换为RxJs可观察对象吗? 我想从本地存储中获取令牌,如果出现错误,应该使用订阅了observable的观察者来捕获它.以下是Promise的现有解决方案: getToken(): Promiseany { return new Promiseany((resolve,reject) = { resolve(JSON.pars
有人可以帮助将此承诺转换为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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |