顺序调用 redux sagas

Calling redux sagas sequentially

这里是 Saga 菜鸟。我试图找到执行此操作的正确方法,但无法想出任何解决我问题的方法。

我有一个 saga,需要 API 调用才能做出决定。根据决定,我可能会进行重定向或分派另一个触发另一个传奇流程的操作。

export default function* applicationFlow(action) {
  let data = { productInfo: {} };
  try {
    yield put(appStatusSwitch('busy', 'Processing', 'app-status.text.verifying'));

    const res = yield call(api.call, data);

    const decision = res.decision ? res.decision.toLowerCase() : null;

    yield put(appDecision(decision));

    switch (decision) {
      case 'question':
          yield put (appQuestions (res.questions));
          // redirect to questions page
          redirectTo ('/question-page');
        break;
      case 'pass':
      case 'fail': 
        //dispatch an action that does another flow..yield takeLatest(APP_SUBMIT, processApplicationFlow)
        yield put (submit ());
        break;
      default:
        redirectTo('/technical-difficulty');
    }
  }
  catch(e) {
    redirectTo('/technical-difficulty');
  }
  finally {
      yield put(appStatusSwitch('free'));
  }
}

在上面的流程中,如何让 saga 等待 yield put(submit()) 完成,然后此生成器中的流程继续到 finally 块?

如果我对你的问题的理解正确,你可以直接 call processApplicationFlow saga 而不是采取行动。

您的 case 看起来像这样:

case 'fail':
  yield call(processApplicationFlow)
  break

call 将阻塞直到另一个 saga 完成。

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