为什么此操作不等待返回响应

时间:2019-06-09 03:38:13

标签: reactjs react-redux action

我要从组件中调用以下内容

const getUserAction = () => {
  return dispatch => {
    dispatch(request());
    return getUser()
      .then(
        response => {
          dispatch(success());
          console.log(response);
          return response
        },
        error => {
          dispatch(failure(error));          
        }
      )
  };
};

然后在组件上,我正在分派此操作:

this.props.dispatch(getUserAction())
  .then(response => console.log(response))
}

我正在从操作中获得控制台日志之前,从上述组件中触发了控制台日志。

这是为什么?我是在做错什么还是预期的行为?为什么操作中的控制台日志等待响应,而同一操作中的return语句却不等待?

然后,如果不通过reducer,如何在组件中获得响应?

1 个答案:

答案 0 :(得分:1)

const getUserAction = (cb) => {
  return dispatch => {
    dispatch(request());
    return getUser()
      .then(
        response => {
          dispatch(success());
          console.log(response);
          // success callback with response
          cb(null /** no error hence null */, response) 

          return response
        },
        error => {
          dispatch(failure(error));          
        }
      )
  };
};

像这样打电话:

this.props.dispatch(getUserAction((err, success) => {
   if(err){
     // Handle error here
     return;
   }, 
   // Success handle 
   console.log(response))
}));