我的回答

可以使用redux-thunk, 然后使用Promise.all().then()

参考回答

使用 redux-saga

redux-saga 是一个管理 redux 应用异步操作的中间件,用于代替 redux-thunk 的。

它通过创建 Sagas 将所有异步操作逻辑存放到一个地方进行集中处理,以此将 react 中的同步操作与异步操作区分开来,以便后期的管理与维护。
redux-saga 如何处理并发:

  • takeEvery,可以让多个 saga 任务并行被 fork 执行 ```javascript import { fork, take } from “redux-saga/effects”;

const takeEvery = (pattern, saga, …args) => fork(function* () { while (true) { const action = yield take(pattern); yield fork(saga, …args.concat(action)); } });

  1. - takeLatest, takeLatest不允许多个saga任务并行的执行。一旦接收到新的发起的action,它就会取消前面所有fork过的任务(如果这些任务还在执行的化)。在处理ajax请求的时候,如果我们只希望获取最后那个请求的响应,takeLatest就会非常有用
  2. ```javascript
  3. import { cancel, fork, take } from "redux-saga/effects";
  4. const takeLatest = (pattern, saga, ...args) =>
  5. fork(function* () {
  6. let lastTask;
  7. while (true) {
  8. const action = yield take(pattern);
  9. if (lastTask) {
  10. yield cancel(lastTask); // 如果任务已经结束,则 cancel 为空操作
  11. }
  12. lastTask = yield fork(saga, ...args.concat(action));
  13. }
  14. });