javascript - 在 redux-thunk 中调用另一个异步函数

标签 javascript reactjs asynchronous redux-thunk

我正在构建一个 React 应用程序并使用 redux-thunk 进行异步操作。我有两个函数 getActivities()createActivity() ,我想在成功调用后者后调用前者。但是,如果我将 getActivities() 放在 createActivity()then block 中,它就不会被调用(这是通过看不到控制台来证明的) .log(),我将其放入 getActivities() 中)。以下是这两个函数:

export const getActivities = () => dispatch => {
console.log('again');
return axios.get(ENV.stravaAPI.athleteActivitiesBaseEndPoint, autHeaders)
    .then(resp => {
        dispatch({type: actions.GET_ACTIVITIES, activities: resp.data})
    })
    .catch(err => {
        if(window.DEBUG)console.log(err);
    })
};

export const createActivity = data => dispatch => {

dispatch(setLoadingElement('activityForm'));
return axios.post(URL, null, autHeaders)
    .then(resp => {
        if (resp.status === 201) {
            dispatch(emptyModal());
        }
        // I WANT TO CALL getActivities() HERE
        dispatch(unsetLoadingElement('activityForm'));
    })
    .catch(err => {
        if(window.DEBUG) console.log(err.response.data.errors);
        dispatch(unsetLoadingElement('activityForm'));
    });
};

如何在另一个内部调用一个?

最佳答案

为了从一个 Action 创建者内部调用另一个 Action ,您只需要调度dispatch(getActivities())

这样的 Action
export const createActivity = data => dispatch => {

    dispatch(setLoadingElement('activityForm'));
    return axios.post(URL, null, autHeaders)
        .then(resp => {
            if (resp.status === 201) {
                dispatch(emptyModal());
            }
            dispatch(getActivities());
            dispatch(unsetLoadingElement('activityForm'));
        })
        .catch(err => {
            if(window.DEBUG) console.log(err.response.data.errors);
            dispatch(unsetLoadingElement('activityForm'));
        });
 };

关于javascript - 在 redux-thunk 中调用另一个异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48359313/

相关文章:

javascript - 有没有更简单的方法来实现多个 if else JavaScript?

javascript - Python 异步代码中的 Promise.race 等价物是什么?

C# CancellationToken 如何与 SqlConnection.OpenAsync(token) 一起使用?

javascript - 为什么变量大于循环内所有可能的值?

javascript - 在 Bootstrap 中将元素内容显示为工具提示的标题

javascript - 使用函数触发 chrome.browserAction.onClicked

javascript - 在 map 函数内的 div 元素上切换 isActive className

javascript - 全屏损坏 - 库存工具

javascript - 在 ReactJS 中将一个组件的引用传递给另一个组件

Yii框架中的PHP异步方法调用