Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 返回承诺的函数的redux saga yield或call()会导致其他saga在不等待的情况下运行_Reactjs_React Redux_Redux Saga - Fatal编程技术网

Reactjs 返回承诺的函数的redux saga yield或call()会导致其他saga在不等待的情况下运行

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

所以在React中,我有一个类似这样的例子:

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我认为像你建议的那样进行一次调度是值得一试的。我也觉得有两份互相依赖的文件有点奇怪。