Javascript 如何在redux saga中等待所有动作(请求后成功/失败)发送?

Javascript 如何在redux saga中等待所有动作(请求后成功/失败)发送?,javascript,redux,redux-saga,Javascript,Redux,Redux Saga,我有以下行动: export function createRequest(inputValues) { return { type: actions.PERSON_CREATE_REQUEST, payload: { inputValues } }; } export function createSuccess(person) { return { type: actions.PERSON_CREATE_SUCCESS, pa

我有以下行动:

export function createRequest(inputValues) {
  return {
    type: actions.PERSON_CREATE_REQUEST,
    payload: {
      inputValues
    }
  };
}

export function createSuccess(person) {
  return {
    type: actions.PERSON_CREATE_SUCCESS,
    payload: {
      person: person
    }
  };
}

export function createFailure(error) {
  return {
    type: actions.PERSON_CREATE_FAILURE,
    payload: {
      error
    }
  };
}
传奇:

表单提交时调用的函数:

handleSubmit = async (event, values) => {
    event.preventDefault();
      await store.dispatch(action.createRequest(values));
      if (this.props.error === null) {
        store.dispatch(reset(this.props.form));
      }
  };

之后等待store.dispatch(action.createRequest(values))我想检查是否调度了
PERSON\u CREATE\u FAILURE
PERSON\u CREATE\u SUCCESS
。在
PERSON\u CREATE\u FAILURE
I设置映射到道具的
error
存储区。但在发出
个人创建请求
后,调用带有
if
的下一行代码。但是我需要等到
PERSON\u CREATE\u FAILURE
PERSON\u CREATE\u SUCCESS
dispatch。如何将saga更改为等待actions分派?

handleSubmit
函数中,只分派
createRequest
操作,不要在代码中的此时等待它的响应

现在,如果请求失败,编写一个reducer来处理
PERSON\u CREATE\u失败
操作。在这个缩减器中,您可以适当地设置应用程序状态,即重置表单状态。然后对包含表单的组件使用
MapStateTrops
,表单将自动重新渲染以匹配更新(在本例中是重置)的表单状态


请注意,使用这种方法,您需要在Redux存储中创建表单的状态,但这样做将简化应用程序的状态生命周期。

我使用Redux表单,以便它连接到存储。我有MapStateToProps。问题是顺序。它现在的工作原理:PERSON_CREATE_请求、我的代码和重置表单,因为错误未更新、PERSON_CREATE_成功/PERSON_CREATE_失败。我想让它发送PERSON_CREATE_请求和PERSON_CREATE_成功/PERSON_CREATE_失败,然后在更新我的错误时用表单重置进行编码。我想说的是,我不认为您需要在handleSubmit函数中等待createRequest操作的结果。您可以通过还原剂实现所需的行为并作出反应。
handleSubmit = async (event, values) => {
    event.preventDefault();
      await store.dispatch(action.createRequest(values));
      if (this.props.error === null) {
        store.dispatch(reset(this.props.form));
      }
  };