我正在使用一些react / redux样板,并且试图找到一种在第一个操作完成时调度操作的方法。

自从我使用redux已经有一段时间了,所以我茫然地知道为什么这种用于分派一个动作的配置不起作用。

在此示例中,假设actionTwo()与actionOne()基本相同,我只希望在actionOne承诺之后立即将其触发
返回。

我的问题是,为什么此配置有问题?在完成操作后立即触发操作的正确方法是什么?

import axios from 'axios';
import type { ThunkAction } from '../types';

export const actionOne = (value1, value2): ThunkAction => dispatch =>
  axios
   .post('/api/route', {
     params: {
       username: value1,
       password: value2
     },
      credentials: 'include'
    })
    .then(response => {

      dispatch(actionTwo());  //this dispatch either fails completely or takes a long time to start

      dispatch({
        type: 'FETCH_ACTIONONE_SUCCESS', //this dispatch fires immediately always
        data: response
      });

    })
    .catch(err => {
      dispatch({
        type: 'FETCH_ACTIONONE_FAIL',
        data: err
      });
    });

最佳答案

如果您在actionone中return许诺,则可以等待它,然后调用actiontwo:

export const actionOne = (value1, value2): ThunkAction => dispatch =>
  return axios.post('/api/route', { // return added here
     params: {


然后在调度时:

const results = await dispatch( actionone )
dispatch( actiontwo )

09-16 09:20