Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник JavaScript

Promise.all

Ждёт выполнения всех промисов параллельно.

Доступно с: ES2015

Синтаксис

Promise.all(promises)

Параметры

ПараметрТипОписание
promisesIterableМассив промисов (или обычных значений).

Возвращаемое значение

PromiseПромис массива результатов в том же порядке — или первая ошибка.

Примеры

Параллельная загрузка:

const wait = (ms, value) => new Promise((resolve) => setTimeout(() => resolve(value), ms));
 
const [user, orders] = await Promise.all([wait(100, 'Anna'), wait(50, 3)]);
 
console.log(user, orders);

Результат:

Anna 3

Одна ошибка — и весь Promise.all отклонён:

try {
  await Promise.all([Promise.resolve(1), Promise.reject(new Error('Failed')), Promise.resolve(3)]);
} catch (error) {
  console.log(error.message);
}

Результат:

Failed

Примечания

Порядок результатов совпадает с порядком промисов, а не с тем, какой завершился раньше. Общее время равно времени самого долгого промиса, а не их сумме.

Если нужно получить результаты даже при ошибках, используйте Promise.allSettled().

См. также

  • Promise.allSettled — Ждёт завершения всех промисов и сообщает результат каждого — успех или ошибку.
  • Promise.race — Возвращает результат первого завершившегося промиса — успешного или нет.
  • Promise.any — Возвращает первый успешный результат, ошибки пропускает.
  • await — Ждёт результата промиса и возвращает его значение.

Вопросы и ответы по теме

В учебнике

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.