我使用的是反应和助焊剂,使用es6。我希望SalesStore
在执行自己的调度之前等待SessionStore
完成。在SalesStore
我有以下内容,但发送不等待。有谁知道这个问题是什么?感谢。
class SalesStore extends ReduceStore {
getInitialState() {
return {};
}
reduce(state, action) {
switch(action.type) {
case Constants.FETCH_SALES:
this.getDispatcher().waitFor([SessionStore.getDispatchToken()]);
return state;
case Constants.FETCH_SALES_SUCCESS:
this.getDispatcher().waitFor([SessionStore.getDispatchToken()]);
return action.payload;
case Constants.FETCH_SALES_FAILURE:
this.getDispatcher().waitFor([SessionStore.getDispatchToken()]);
return state;
default:
return state;
}
}
}
export default new SalesStore(AppDispatcher);
答案 0 :(得分:-1)
减速机必须是纯功能 所以你应该将异步调用移动到动作创建者
function getToken(){
// Async call then
return {
type:'GET_TOKEN_SUCCESS'
}
}
function getSales(){
// async then
return {
type:'GET_SALES_SUCCESS'
}
}
// main action will call `getToken` and `fetchSales` actions
function fetchSales(params){
return dispatch => {
dispatch(getToken()).then((res)=> dispatch(getSales())
}
}
要管理承诺,您可以使用此promises