我有一个简单的注销功能(仅用于测试),我想在操作完成时通知用户。首先想到的是用承诺做到这一点。
我试过这样但是它有问题。我不太明白这些是如何运作的。我可以这样做,还是会有更好的方法?
功能
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"
}
}
答案 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