Что касается подхода
, но я не могу разобрать объект обещания
. Основная идея такова: Promise - это не анализ данных.Речь идет об ожидании, пока данные не поступят.
Это может быть сделано с async/await
(и с использованием redux-thunk, поскольку мы не можем просто вернуть действие синхронно)
export const checkStreamerStatus = (streamers) => async (dispatch) {
dispatch({
type: CHECK_STREAMER_STATUS,
payload: {
streamers: streamers.map(streamer => ({
...streamer,
status: await getStatus(streamer)
}))
}
});
}
Несовершенство - все, что будет вызвано getStatus
последовательно.И любой следующий запрос будет ждать ответа предыдущего.Чтобы все запросы выполнялись параллельно, нам нужно создать N запросов, а затем ждать всех с помощью Promise.all
:
async function appendWithStatus(streamer) {
return {
...streamer,
status: await getStatus(streamer);
};
}
export const checkStreamerStatus = (streamers) => async (dispatch) => {
const streamersWithStatus = await Promise.all(streamers.map(appendWithStatus));
dispatch({
type: CHECK_STREAMER_STATUS,
payload: {
streamers: streamersWithStatus,
}
});
}