誰かがこの約束をRxJs observableに変換するのに役立つことができますか? ローカルストレージからトークンを取得したいと思います。エラーの場合は、observableを購読しているオブザーバーにキャッチする必要があります。以下プロミスと既存のソリューションである:私は方法以下で観察に変換しようとPromise to RxJs Observableに変換してください
this.authService.getToken().then(token => {
this.token = token;
}).catch(() => console.log('Error! cannot get token'));
:
getToken(): Promise<any> {
return new Promise<any>((resolve, reject) => {
resolve(JSON.parse(localStorage.getItem('currentUser')).token);
reject();
});
}
と加入者である
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はrejectメソッドで正常にキャッチします。アイデア何が間違っている?おかげ
answer.Iのためにあなたにマーティンをありがとうしかし、私は入手トークン方式自体が観測に変換します。私はPromiseやfromPromiseを使いたくない。あなたはそれを書くことができますか? –
私はあなたがしたいことを理解していません。あなたは約束を何も使用したくないのですか?あなたは何をしたいのかを示すデモをすることができますか? – martin
正確に。私はPromiseをまったく使いたくない。まず、fromPromiseで変換するのではなく、Observableを使用してgetTokenを作成します。次に、このメソッドに登録します。 –