Вы можете попробовать 2 вещи, если важен порядок действий, отправляемых при разрешении 3 запросов:
Просто отправьте действия после завершения всех 3:
export const fetchData = () => {
return dispatch => {
const promises = [];
dispatch({type: FETCHING_DATA});
Promise.all(
[...new Array(3)].map((ignore,i)=>i === 0 ? 0 : (i + "01"))
.map(
start=>axios.get(`${api_root_url}/v1/?start=${start}`)
)
).then(
results=>results.forEach(
result=>
dispatch({type: FETCH_DATA_SUCESS, payload: result.data})
)
).catch(
err => dispatch({type: FETCH_DATA_ERR, payload: err.data})
);
//not sure why you want to return something here
//return Promise.all(promises)
}
}
Или сохранитеваш код как есть, но в dispatch({type: FETCH_DATA_SUCESS, payload: result.data})
добавьте, какой запрос завершен, чтобы редуктор знал, где обновить состояние.Что-то вроде dispatch({type: FETCH_DATA_SUCESS, payload: {request_from:start,data:res.data}})
и то же самое для оператора catch.