问题描述
让我们考虑以下传奇故事:
function* mySaga(){
const x = yield call(getX)
}
实际上,const x
的值不是直接由call(getX())
的返回值分配的,而是由在调用mySaga.next(whatever)
时传递的任何值分配的。
我认为redux-saga足够聪明,可以通过调用.next()
方法并最终产生诺言的结果来管理传奇。
是吗?
仅假设x
实际上是getX()
的结果有多安全?
解决方法
仅假设x实际上是getX()的结果,这有多安全?
如果生成器正在由redux saga运行,则只要getX
返回某些内容(即,它不会抛出并且不会进入无限循环),redux saga便会保证该saga将被恢复该返回值,并因此分配给x
。
如果您手动遍历saga,那么它将获得您手动插入的内容。关于我可以手动遍历saga的唯一原因是编写单元测试,因此您不必担心此问题。关于您是否正在使用设计的redux saga。