我正在使用thunk和链接异步操作如下所示。一切都按预期工作。
function dispatchInitialCall(req, q) {
return dispatch => Promise.all([
dispatch(validateUser(req))
].map(function (promise) {
return Promise.resolve(promise).reflect();
})).then(results => {
results.forEach(result => {
if(result.isFulfilled()){
} else {
}
});
});
}
function dispatchParallelCalls(req, q, params) {
return dispatch =>
Promise.all([
dispatch(loadResults(req, q, params)),
dispatch(loadInitialPromo(req, q))
].map(function (promise) {
return Promise.resolve(promise).reflect();
})).then(results => {
results.forEach(result => {
if(result.isFulfilled()){
} else {
}
});
});
}
function combineCalls(req, q, params) {
return (dispatch, getState) => {
return dispatch(dispatchInitialCall(req, q)).then(() => {
return dispatch(dispatchParallelCalls(req, q, params))
})
}
}
我试图找出一种直接在dispatchParallelCalls中使用来自validateUser的响应的方法,而无需在reducer中设置值。
我将更改validateUser以接受回调,因此不是dispatch(dispatchInitialCall(req,q)),是否可以获取validateUser(req,callback)的值并直接在此处使用返回值?
像...一样的东西。
function combineCalls(req, q, params) {
return (dispatch, getState) => {
validateUser(req, function(data){
params.newProperty=data;
return dispatch(dispatchParallelCalls(req, q, params))
})
}
}