Junior — Middle
Promise.all va continua executarea dacă unul dintre promisiunile transmise se va încheia cu eroare?
sobes.tech AI
Răspuns de la AI
Нет, Promise.all не продолжит ожидать остальные промисы, если один из них завершится с ошибкой (отклонится). В этом случае Promise.all сразу же отклоняется с той же ошибкой, и дальнейшее выполнение остальных промисов не влияет на результат.
То есть, если хотя бы один промис из массива, переданного в Promise.all, отклонится, итоговый промис тоже будет отклонён с этой ошибкой.
Пример:
const p1 = Promise.resolve(1);
const p2 = Promise.reject(new Error('Ошибка'));
const p3 = new Promise(resolve => setTimeout(() => resolve(3), 1000));
Promise.all([p1, p2, p3])
.then(results => console.log('Результаты:', results))
.catch(error => console.error('Ошибка:', error.message));
// Выведет: Ошибка: Ошибка
Обратите внимание, что p3 может продолжить выполнение, но Promise.all уже отклонился и не ждёт его результата.