【发布时间】:2018-02-19 11:16:15
【问题描述】:
有人可以帮助将这个 Promise 转换为 RxJs observable 吗? 我想从本地存储中获取令牌,如果出错,它应该被订阅 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 通过拒绝方法成功捕获它。有人可以给出一个想法有什么问题?谢谢
【问题讨论】: