Middle+
Quelles méthodes statiques de Promise connaissez-vous en plus de Promise.resolve ? En quoi Promise.all diffère-t-il de Promise.allSettled ?
sobes.tech IA
Réponse de l'IA
Помимо Promise.resolve, существуют и другие статические методы Promise:
Promise.reject(reason)— создаёт промис, который сразу отклоняется с указанной причиной.Promise.all(iterable)— принимает массив (или другой итерируемый объект) промисов и возвращает новый промис, который:- выполняется, когда все промисы из массива успешно выполнены, с массивом результатов.
- отклоняется сразу, если хотя бы один из промисов отклоняется.
Promise.allSettled(iterable)— принимает массив промисов и возвращает промис, который выполняется, когда все промисы завершены (независимо от результата), с массивом объектов, описывающих результат каждого промиса (fulfilled или rejected).Promise.race(iterable)— возвращает промис, который выполнится или отклонится, как только первый из переданных промисов выполнится или отклонится.Promise.any(iterable)— возвращает промис, который выполнится с результатом первого успешно выполненного промиса, или отклонится, если все промисы отклонятся.
Отличие Promise.all от Promise.allSettled:
Promise.allотклоняется при первом же отклонённом промисе, полезен, когда нужно, чтобы все операции прошли успешно.Promise.allSettledждёт завершения всех промисов, независимо от их результата, и возвращает подробный отчёт, что удобно для сбора результатов с учётом ошибок.
Пример:
Promise.all([
Promise.resolve(1),
Promise.reject('error'),
Promise.resolve(3)
]).catch(console.log); // Выведет 'error'
Promise.allSettled([
Promise.resolve(1),
Promise.reject('error'),
Promise.resolve(3)
]).then(console.log);
/* Выведет:
[
{ status: 'fulfilled', value: 1 },
{ status: 'rejected', reason: 'error' },
{ status: 'fulfilled', value: 3 }
]
*/