5
私は、Observableを成功と失敗のアクションを減らすためにマッピングすることを想定しています。私はネットワークコールを(約束を与える関数で)行います。成功した場合、エラーアクションより失敗した場合、成功アクションを転送する必要があります。観察可能なもの自体は続かなければならない。私が検索できるすべてのものについて、RxJSにはこのエラーをキャッチして元のものを再試行する仕組みがありません。私は、件名を作成し、その対象に誤りを押すと、そのエラーからのアクションの観測を作成RxJS catch ** and Observableを再試行します
error$ = new Rx.Subject();
searchResultAction$ = search$
.flatMap(getSearchResultsPromise)
.map((resuls) => {
return {
type: 'SUCCESS_ACTION',
payload: {
results
}
}
})
.retryWhen((err$) => {
return err$
.pluck('query')
.do(error$.onNext.bind(error$));
});
searchErrorAction$
.map((query) => {
return {
type: 'ERROR_ACTION',
payload: {
query,
message: 'Error while retrieving data'
}
}
});
action$ = Observable
.merge(
searchResultAction$,
searchErrorAction$
)
.doOnError(err => console.error('Ignored error: ', err))
.retry();
action$.subscribe(dispatch);
すなわち:私は、私はと満足していない私のコード内の溶液を次しています。
私はRxJSでこれを行うより良い方法がありますか?基本的には、どのようなエラーが発生したのかを通知し、Observableが何をしているのかを続けたいと思います。
ああ!ネストされたオブザーバブルなぜ私はそれを考えなかったのですか?観察可能な世界に慣れるにはもっと時間がかかるでしょう。ありがとう。 – channikhabra