redux-observable傾向於RxJS的習慣範例幾乎所有你會做的事情。當您將Epics結合在一起時,您將創建一個具有正常function (action$, store)
簽名的新Epic。所以這個新的Epic代表了那些單獨的Epics的所有輸出,包括錯誤。
您可以通過定義自己的rootEpic
並撰寫您的combineEpics()
調用的結果來利用該事實。由於Epics是工廠,所以您需要記住傳遞(action$, store)
!
這裏有一種方法:
export const rootEpic = (action$, store) =>
combineEpics(epic1, epic2, epic3)(action$, store) // <-- call epic w/ args
.do({ error: err => console.error(err) });
你可能不應該使用.catch()
運營商這一點,因爲.catch()
是返回一些其他可觀察改爲使用,當有錯誤。如果你只是想記錄錯誤(而不是嘗試恢復),.do()
是理想的操作符 - 它的目的是允許你做外部副作用(如日誌記錄),這些副作用對流本身沒有影響。
撰寫史詩是非常強大的,不僅在這種情況下,而且很多其他人,我們打算很快描述。您可能也有興趣the RFC for better default error handling。
感謝您的回覆和其他提示。你的解決方案就像一個魅力。 – ncuillery