Как dispatch
возвращает одно из двух:
Для действия синхронизации (например, dispatch ({type: 'ACTION'})
он вернет объект действия ({type: 'ACTION'}
в моем примере)
Для групповых действий (создатели действий, которые возвращают функции) он возвращает тот же результат, что и создатель действий.
Так что для вашего случая просто добавьте return
заявление для вашего создателя действия
const myAction = (arg1, arg2) => {
return (dispatch, getState) => {
return Promise.resolve(arg1 + arg2);
}
}
Вы можете сделать myAction
более реалистичным, как, например,
const myAction = (arg1, arg2) => {
return (dispatch, getState) => {
return fetch(/* some request */).then(response => dispatch ({type: 'RESPONSE_RECEIVED', payload: response}));
}
}
В этом случае также будет получено обещанное обещание. Объектом обещания будет объект {type: 'RESPONSE_RECEIVED', payload: response}
.
Или вы можете установить произвольное содержимое для возвращенного обещания, например,
const myAction = (arg1, arg2) => {
return (dispatch, getState) => {
return fetch(/* some request */).then(response => {
dispatch ({type: 'RESPONSE_RECEIVED', payload: response})
return response;
}
}
}
В этом примере разрешенное обещание будет возвращено, но оно содержит response
внутри.
Во всех случаях вы можете связать, как хотите
dispatch(myAction(...args)).then((result) => {
...do something with result
});