Redux回复承诺

时间:2017-08-01 10:38:25

标签: javascript reactjs promise redux react-redux

我有一个简单的注销功能(仅用于测试),我想在操作完成时通知用户。首先想到的是用承诺做到这一点。

我试过这样但是它有问题。我不太明白这些是如何运作的。我可以这样做,还是会有更好的方法?

功能

logOut = () => {
    this.props.logoutUser().then((passed) => {
        if (passed) {
            alert("You are now logged out!");
        }
    });
};

退出操作

export function logoutUser() {
    return dispatch => {
        new Promise(function (resolve, reject) {
            dispatch(logout()).then((response) => {
                return true;
            }).catch((error) => {
                return false;
            });
        });
    }
}

function logout() {
    return {
        type: "LOGOUT"
    }
}

2 个答案:

答案 0 :(得分:2)

退出功能问题

export function logoutUser() {
    return dispatch => {
        new Promise(function (resolve, reject) {
            dispatch(logout()).then((response) => {
                resolve(true); // changed
            }).catch((error) => {
                reject(error);  // changed
            });
        });
    }
}

您必须传递回调函数resolve才能成功,而reject则会失败。 请参阅此link

更新:其次,您必须使用thunk中间件才能使用dispatch Promise对象github

答案 1 :(得分:0)

您也可以使用logOut = () => { this.props.logoutUser(result => { if (result.success) { alert("You are now logged out!"); return; } // Handle error }); }; export function logoutUser(callback) { logout() .then(() => callback({ success: true })) .catch(error => callback({ error })); return dispatch => { dispatch({ type: "LOGOUT" }); }; } function logOut() { // log out function that returns a promise } 执行此操作,就像这样 -

hexagon
相关问题