有人可以帮忙将这个 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');
});
}
and
this.authService.getToken2()
.subscribe((token) => console.log(token), (er) => console.log(er));
但问题是,当从本地存储获取令牌时出现错误时,RxJs可观察对象无法通过obs.next()捕获它。就好像它已经成功解决了一样。而Promise通过reject方法成功捕获它。有人能给个想法是怎么回事吗?谢谢。
obs.error()
会发出一个错误,而catch
只处理error
的发射。问题可能在你的代码中的其他地方。 - martin