Почему это действие не ждет возврата ответа - PullRequest
0 голосов
/ 09 июня 2019

У меня есть следующее, которое я звоню из компонента

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))
}

Я вижу журнал консолиот запускаемого выше компонента до журнала консоли от действия.

Почему это так?Я делаю что-то не так или это ожидаемое поведение?Почему консольный журнал от действия ожидает ответа, а оператор возврата от того же действия не ждет?

И как мне получить ответ в моем компоненте, если он не проходит через редуктор?

1 Ответ

1 голос
/ 09 июня 2019
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))
}));
...