是否可以通过thunk传递异步“响应”?鉴于下面的动作创建者:
export function emitLoadPlot(json_req) {
return function (dispatch) {
axios.post(URI, {
json_req
})
// .then(() => dispatch(
// emitTxRxAlert("yellow", "Received plot from server")
// ))
.then((response) => dispatch({
type: EMIT_PLOT_DATA_REQ,
payload: response
}))
.then(() => dispatch(
emitTxRxAlert("green", "Loaded plot model")
))
.then(() => dispatch({
type: EMIT_LOAD_PLOT
}))
.then(() => dispatch({
type: EMIT_VIEW_STATUS
}))
};
}
如果我取消注释警报调度,则response
永远不会将其发送到需要的位置。说得通。其中一些调用(以及客户端上的操作)需要很长时间才能完成,我想在浏览器中异步请求返回到加载到redux存储之间交换客户端UI警报(比方说)。在这台缓慢的笔记本电脑上,网络请求比处理response
所需的时间少得多。
我有没有办法通过上面的第一个thunk传递response
(或对response
的引用)?
答案 0 :(得分:1)
调用then()
会返回回调结果的承诺。
你的回调会返回dispatch()
返回的内容,这不是你想要的值。
相反,您需要返回原始值:
.then(response => {
dispatch(...);
return response;
})