Я не знаю, как разрешить эту ситуацию, используя обещания JS.
Представьте, что у меня есть несколько статей, и я хочу отправить запрос на исправление для их обновления. Я отправляю один запрос на статью. Если запрос одной статьи успешно выполняется, я обновляю эту статью, но если запрос не выполняется, я обновляю статью по-другому. Также я хочу показать пользователю сообщение, информирующее, правильно ли обновлены все статьи.
Это не мой реальный сценарий, и это может быть странным примером. Но это то, чего я хочу достичь в своем приложении React.
Вот что я пытаюсь сделать прямо сейчас:
const saveArticles = articles => {
const promises = [];
articles.forEach(article => {
const promise = axios
.patch('/articles', article)
.then(() => updateArticleUi(article))
.catch(() => updateArticleUiWithError(article));
promises.push(promise);
});
Promise.all(promises)
.then(() => tellTheUserThereWasNoErrors())
.catch(() => tellTheUserThereWasSomeErrors());
};
Это не работает, потому что Promise.all
всегда выполняет обратный вызов then
, все обещания выполняются или нет.
Спасибо!