JavaScript Promise.allSettled() — дочекатися всіх, навіть невдалих


Promise.allSettled() чекає, доки всі обіцянки завершаться — байдуже, успіхом чи помилкою — і повертає стан кожної.

автор: NagarD

Загальний опис

На відміну від all, він ніколи не падає. Кожен елемент результату — це об'єкт зі status: або fulfilled зі value, або rejected з reason.

Потрібен там, де невдача частини — нормальна ситуація. Надсилаєш десять сповіщень: три не дійшли, але сім дійшли, і це успіх, а не збій. all тут відкинув би все через одне падіння.

автор: NagarD

Порада

Правило вибору просте: all — коли без усіх результатів далі нема сенсу; allSettled — коли часткова невдача прийнятна.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
allSettled 76+ 71+ 13+ 63+ 79+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
allSettled 76+ yes yes 13+

Приклади

+ запропонувати свій приклад у пісочниці

Частина запитів упала — решта все одно приїхала.

// top-level await працює лише в модулях — тут той самий код в async-функції
(async () => {
    const results = await Promise.allSettled([
        fetch('/api/one').then(r => r.json()),
        fetch('/api/broken').then(r => r.json()),
        fetch('/api/three').then(r => r.json()),
    ]);

    for (const result of results) {
        if (result.status === 'fulfilled') {
            console.log('Готово:', result.value);
        } else {
            console.warn('Не вийшло:', result.reason.message);
        }
    }

    // лише вдалі
    const ok = results
        .filter(r => r.status === 'fulfilled')
        .map(r => r.value);
})();
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід