redux-saga 取消效果在取消时触发错误“已在运行”。或者如何从控制台删除此错误?

问题描述 投票:0回答:2

几周以来,我一直在尝试理解为什么当我尝试在我的 root saga 中运行

yield cancel
效果时,我的
cancel
会抛出错误:

export function* loginData() {
  const watcher = yield fork(getLoginWatcher);
  yield take(LOCATION_CHANGE);
  yield cancel(watcher);
}

控制台错误:

utils.js:202 uncaught at getLogin Generator is already running"

如果我删除取消,我的传奇就不会被取消。这就像同时工作并抛出错误。

这个错误真的让我很恼火,看起来我的应用程序有问题。

执行环境:

  • Debian 8 杰西
  • 版本 54.0.2840.100(64 位)
  • 节点v7.2.0
  • Npm 3.10.9

有谁知道

redux-saga/effects
proc 如何处理它的
cancel
效果以及 如何 已经运行 错误生成。

reactjs redux generator redux-saga
2个回答
1
投票

我认为造成这种情况的原因可能不是描述中所述的取消效果。我试图使用react-boilerplate独立完成类似的登录过程,并发现许多其他示例使用的方法比最新的样板代码更旧,所以一直在解决这些问题,我也得到了这个确切的错误,调用堆栈中的内容似乎来自取消效果。 然而,当阅读此处发布的同一问题时https://github.com/react-boilerplate/react-boilerplate/issues/1281有人建议这实际上是一个错误,因为正在调用“forwardTo”不使用

yield 调用(forwardTo,参数)

一旦我将传奇中的调用更改为此,错误就消失了。我认为这就是问题的解决方案。其他人似乎在 github 问题页面上也同意。


0
投票

这可能会对那里的人有所帮助。所以我也遇到了与此相关的问题,这并不是取消效果,而是调度一个再次运行相同传奇的操作。所以这是你应该注意的事情。有点递归的逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.