如何等待派遣?

时间:2016-03-04 21:06:04

标签: reactjs flux reactjs-flux

我使用的是反应和助焊剂,使用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);

1 个答案:

答案 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