5
我的用例是將一個Observable映射到redux動作的成功和失敗。我做了一個網絡調用(帶有一個承諾的函數),如果成功,我必須轉發一個成功的動作,如果失敗而不是錯誤動作。 Observable本身應該繼續前進。對於我所能搜索到的所有內容,RxJS沒有這種捕獲錯誤並重試原始文件的機制。我有以下我的代碼的解決方案,我不是很滿意:RxJS catch **和**重試一次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已經做的事情。
啊!嵌套的observable。爲什麼我沒有想到它!猜猜它需要更多時間才能適應Observable世界。謝謝。 – channikhabra