Reactjs 返回承诺的函数的redux saga yield或call()会导致其他saga在不等待的情况下运行
所以在React中,我有一个类似这样的例子:Reactjs 返回承诺的函数的redux saga yield或call()会导致其他saga在不等待的情况下运行,reactjs,react-redux,redux-saga,Reactjs,React Redux,Redux Saga,所以在React中,我有一个类似这样的例子: dispatch(someAction(param1)); dispatch(secondAction(param)); 使用运行如下函数的takeEvery调度和处理某些操作: function* handleSomeAction(param1) { // some code yield aFunctionThatReturnsPromise(param1); console.log('here1'); // some code
dispatch(someAction(param1));
dispatch(secondAction(param));
使用运行如下函数的takeEvery
调度和处理某些操作:
function* handleSomeAction(param1) {
// some code
yield aFunctionThatReturnsPromise(param1);
console.log('here1');
// some code
}
与up类似,但处理secondAction
function* handleSecondAction(param) {
// some code
console.log('here2');
// some code
}
“here2”发生在“here1”之前。现在的问题是,什么是阻止其他传奇执行的最佳方法。我是否必须创建一个可以同时启动
handleSomeAction
和handleSecondAction
的saga?或者是否有其他方法?如果看不到完整的saga代码,很难说,但是yield call()
正在阻止调用。运行代码后您希望发生什么“here1”在“here2”之前记录handleSomeAction
在handleSecondAction
之前完成?另外,secondAction
是否可以在“here”被记录或handleSomeAction
完成后发送?@stackoverflow newbie是的,我希望“here1”在“here2”之前。所以handleSomeAction
应该在handleSecondAciton
之前完成。你的意思是像在“here1”之后做第二个动作的put
?是的,这是可能的,但我认为这不是最好的解决方案,但我想如果没有更好的解决方案,我就不得不这么做。@Clarity为什么你需要整个故事?是的,yield call()
确实会阻塞,但在我看到的函数是承诺函数或异步函数的情况下就不会阻塞了。@e我认为像你建议的那样进行一次调度是值得一试的。我也觉得有两份互相依赖的文件有点奇怪。