【发布时间】:2016-11-14 18:10:05
【问题描述】:
是否可以从动作创建者返回承诺/信号,当 Redux thunk 成功调度某些动作时解决?
考虑这个动作创建者:
function doPost(data) {
return (dispatch) => {
dispatch({type: POST_LOADING});
Source.doPost() // async http operation
.then(response => {
dispatch({type: POST_SUCCESS, payload: response})
})
.catch(errorMessage => {
dispatch({type: POST_ERROR, payload: errorMessage})
});
}
}
当 Redux 已调度 POST_SUCCESS 或 POST_ERROR 动作时,我想在调用 doPost 动作创建者之后异步调用组件中的某些函数。一种解决方案是将回调传递给动作创建者本身,但这会使代码混乱且难以掌握和维护。我也可以在 while 循环中轮询 Redux 状态,但这会效率低下。
理想情况下,解决方案是一个承诺,当某些操作(在本例中为 POST_SUCCESS 或 POST_ERROR)被调度时,它应该解决/拒绝。
handlerFunction {
doPost(data)
closeWindow()
}
上面的例子应该重构,所以只有在doPost()成功时才会调用closeWindow()。
【问题讨论】:
标签: javascript html reactjs redux redux-thunk