如何在不知道首先调度哪一个的情况下采取多个动作?

rom*_*guy 5 redux-saga

如何在不知道首先调度哪个ACTION_A和ACTION_B的情况下等待ACTION_A和ACTION_B?

我试过,const result = yield take([ACTION_A, ACTION_B])result只是第一个调度的动作,而我需要两个动作.

我试过const {a, b} = yield race({a: yield take(ACTION_A), b: yield take(ACTION_B)})但如果a定义了,b不是.

记住,我不能简单地yield take(ACTION_A); yield take(ACTION_B)因为我不知道哪一个先出现.

Ale*_*lex 8

你可以使用all帮助器.all创建一个效果描述,指示中间件并行运行多个效果并等待所有这些效果完成.

您的代码可能如下所示:

function* mySaga() {
  const [actionA, actionB] = yield all([
    take(ACTION_A),
    take(ACTION_B),
  ])
}
Run Code Online (Sandbox Code Playgroud)

我希望我的回答很有帮助.