redux saga 的变量赋值 generators/sagas

variable assignment on redux saga generators/sagas

让我们想想下面的故事:

function* mySaga(){
  const x = yield call(getX)
}

事实上,const x的值并不是由call(getX())的return值直接赋值的,而是在mySaga.next(whatever)打电话。

我假设 redux-saga 足够聪明,可以通过调用 .next() 方法并返回最后一个承诺的结果来管理传奇。

是吗? 假设 x 实际上是 getX() 的结果有多安全?

How safe is it to just assume that x is actually the result of getX()

如果生成器被 redux saga 运行,那么只要 getX return 有东西(即,它不会抛出也不会进入无限循环)redux saga 保证 saga 将使用该 return 值恢复,因此分配给 x.

如果您手动单步执行 saga,那么它会得到您手动插入的任何内容。我认为手动迭代 saga 的唯一原因是编写单元测试,所以这不是您需要关心的问题担心您是否按设计使用了 redux saga。