我需要触发一个事件,检查当前页面/当前路由中是否完成了所有事件加载。
假设
Current route is `/address`
在此路线中加载的事件是
LOAD_NAME
LOAD_PHONE_NUMBER
LOAD_GOOGLE_LOCATION
所以这里LOAD_GOOGLE_LOCATION
将花时间执行。在完成所有这些事件加载后,我需要触发另一个Event
我正在使用React
和Flux
如果您使用redux-thunk,您可以实现以下操作:
const loadName = url => dispatch => fetch(url)
.then(res => res.json())
.then(json => {
dispatch({ type: 'LOAD_NAME', data: json }
return json;
}))
const loadPhoneNumber = url => dispatch => fetch(url)
.then(res => res.json())
.then(json => {
dispatch({ type: 'LOAD_PHONE_NUMBER', data: json };
return json;
}))
const loadGoggleLocation = url => dispatch => fetch(url)
.then(res => res.json())
.then(json => {
dispatch({ type: 'LOAD_GOOGLE_LOCATION', data: json };
return json;
}))
//load one after the other
const loadAll = () => dispatch =>
loadName(…)
.then(json => loadPhoneNumber(json.number))
.then(json => loadGoogleLocation(json.location))
.then(dispatch({ type: 'ALL_LOAD' }))
//load all in parallel
const loadAll = () => dispatch => Promise.all([
loadName(…),
loadPhoneNumber(…),
loadGoggleLocation(…)
])
.then(([namejson, numberjson, locationjson]) =>
dispatch({ type: 'ALL_LOAD' }))
这条路: