或者换句话说,我怎么知道何时分派动作完成?
我有一个Webapp,我将通过根据用户输入的调度来更新redux存储。如果我在分派后立即将redux存储的状态推送到服务器,则服务器没有最新信息。在推送到服务器之前,我需要等待操作完成,因此是一个问题。
编辑 根据markerikson的答案,我解决了它。我以为调度是异步调用的,但是调度操作组的执行是同步发生的。那是错误的,马克是正确的。我的问题是更新服务器调用是在组件中进行的,它会将需要通过redux-store更新的道具推送到服务器。道具的更新速度不够快。
答案 0 :(得分:0)
调度是完全同步的,除非由中间件更改。因此,一旦返回对dispatch()
的调用,商店状态就会更新,并且所有订户都将得到通知。
如果您需要等待某些异步行为完成,则可以编写一个返回承诺的thunk,并在分派时将其链接:
function someThunkReturningAPromise() {
return (dispatch) => {
const promise = myAjaxLib.fetchData().then(response => {
dispatch(loadData(response.data));
});
return promise;
}
}
dispatch(someThunkReturningAPromise()).then( () => { });
答案 1 :(得分:0)
这个问题有点晚了,但是对于那些根据问题标题来到这里的人们来说,请看一下:
store.subscribe()
store.getState()
其中“商店”是对您的redux商店的引用。
store.subscribe(() => {
const newState = store.getState();
// check out your updated state
});
上面的代码将在redux状态更新时随时运行