redux-observable无法捕获发出的操作中的错误,错误会停止操作流

时间:2018-11-06 00:38:08

标签: redux rxjs redux-observable

如果由于在Redux可观察的史诗中发出动作而导致js错误发生,则它将停止所有史诗监听新动作。这很讨厌,因为在前端,它仍然看起来好像该应用程序正在运行,但是在后台却什么也没有保存。

我试图在我的史诗中捕获错误,但是由于某种原因,它没有捕获到由发出的动作引起的错误(请参见此处的示例:https://stackblitz.com/edit/redux-observable-playground-qtughj?file=ping-pong.js

我认为升级到redux-observable版本1.0.0可以解决此问题,但不幸的是它仍然存在。

有什么方法可以捕获由redux可观察到的发出的动作引起的错误?

问题与this question不同,因为错误是在史诗发出它的输出redux动作后在reducer中触发的,因此在可观察变量链中用.error捕获它不会工作(请参见example above进行演示)。

谢谢!

1 个答案:

答案 0 :(得分:0)

redux-observable Github repo中讨论了此问题之后,最安全的解决方案似乎是创建一些自定义Redux中间件,以阻止错误一直冒泡回到根史诗,例如

const store = createStore(rootReducer,
  applyMiddleware(epicMiddleware, store => next => action => {
    try {
      next(action);
    } catch (e) {
      setTimeout(() => {
        throw e;
      });
    }
  })
);