在 redux saga 中将所有(并行请求)放入队列?

yield all (parallel requests) into queue in redux saga?

我有故事:

function* sagaA() {         // accumulates all user requests
   // do stuff
   yield all(users.map((user) => call(sagaB, user));
   yield put(SUCCESS ACTION);
}

function* sagaB(user) {     // is responsible for single request
   yield call(api, user);
   // do stuff
}

function* watch() {       // watches for the action
   yield take('REQUEST', sagaA);
}

但是,在这种情况下,请求是并行的,它们没有排队。

问题: 如何修改这个 sagas 以便它们被一个一个地调用?

您可以使用常规 for 循环:

function* sagaA() {
  for(const user of users) {
    yield call(sagaB, user);
  }
  yield put(SUCCESS_ACTION);
}