使用同步回调链接异步操作并传递数据的最佳方法是什么?

时间:2017-03-08 22:38:02

标签: reactjs asynchronous redux

我正在使用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))
        })
    }
}

0 个答案:

没有答案