如何在不知道先派遣哪个的情况下采取多项行动?

How to take multiple actions without knowing which one is dispatched first?

如何在不知道哪个先发送的情况下等待 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) 因为我不知道哪个先出现。

您可以使用 all 助手。 all 创建一个 Effect 描述,指示中间件并行 运行 多个 Effect 并等待所有 Effect 完成。

您的代码可能如下所示:

function* mySaga() {
  const [actionA, actionB] = yield all([
    take(ACTION_A),
    take(ACTION_B),
  ])
}

希望我的回答对您有所帮助。