JavaScript·100 питань

Що таке Promise.race, allSettled, any?

Відповідь

У сучасному JavaScript, крім класичного Promise.all, існує ще ціла низка допоміжних методів для роботи з колекціями асинхронних завдань, кожен із яких вирішує специфічні бізнес-завдання. Метод race призначений для ситуацій, коли вам важливий найшвидший результат, незалежно від того, чи буде він успішним, чи помилковим. Він повертає перший проміс, що завершився, серед переданих, будь то успіх чи помилка, що часто застосовується для реалізації таймаутів мережевих запитів.

Цілком інакше працює метод allSettled, який був доданий для ситуацій, коли необхідно дочекатися завершення абсолютно всіх завдань, незалежно від їхнього результату. Метод allSettled чекає всі проміси й повертає масив об'єктів, що описують статус кожного з них зі значеннями або результату, або причини помилки. Найважливішою властивістю цього методу є те, що allSettled ніколи не відхиляється загальним промісом, що робить його незамінним інструментом для аналітики або пакетної обробки даних, де часткові збої не повинні зупиняти весь процес.

Нарешті, метод any орієнтований виключно на пошук першого успішного результату. Він повертає найперший успішний проміс, ігноруючи будь-які попередні помилки. Якщо ж усі передані завдання завершилися невдало, метод any відхиляється, повертаючи спеціальний об'єкт AggregateError, що містить усі накопичені помилки. Така поведінка робить any ідеальним вибором для реалізації механізмів резервного копіювання або отримання даних із кількох дзеркал одного й того самого сервера.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем