我想从一个saga中调用另一个saga。
当然,saga是一个生成函数,并且是异步的。
我应该使用
当然,saga是一个生成函数,并且是异步的。
我应该使用
yield *
还是始终使用yield
?function* mySaga({ payload: { id, name } }) {
yield myOtherAsyncSaga(); // when to use yield *?
}
mySaga()
生成器将只返回另一个生成器的一个结果,然后就结束了。yield *
的目的是有效地委托给另一个生成器,并在该生成器完成之前继续返回所有其结果。委托生成器可以在此之前和之后产生自己的值。 - Pointyyield
的行为与yield *
是相同的吗? - Ben Astonyield
与yield*
是相同的,因为yield
会将迭代器输出,而Redux的魔法会使其正常工作,就像您已经输出了一个Promise一样。yield*
只是意味着您自己处理迭代器,而yield
则让Redux为您处理它。 - geon