Яка різниця між promise.all i promise.allsettled?
Вступ
У JavaScript обробка асинхронних операцій є важливою частиною програмування. Два методи, які часто використовуються для роботи з масивами промісів, це Promise.all та Promise.allSettled. У цьому документі ми розглянемо різницю між ними.
Promise.all
Опис
Promise.all приймає масив промісів і повертає новий проміс, який виконується, коли всі проміси в масиві виконані. Якщо будь-який з промісів відхилено, Promise.all також буде відхилено.
Приклад використання
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values);
});
// Виведе: [3, 42, "foo"]Promise.allSettled
Опис
Promise.allSettled також приймає масив промісів, але повертає новий проміс, який виконується, коли всі проміси завершені, незалежно від того, чи були вони виконані або відхилені. Результат буде масивом об'єктів, які описують статус кожного промісу.
Приклад використання
const promise1 = Promise.resolve(3);
const promise2 = Promise.reject('error');
const promise3 = new Promise((resolve) => {
setTimeout(resolve, 100, 'foo');
});
Promise.allSettled([promise1, promise2, promise3]).then((results) => {
console.log(results);
});
// Виведе:
// [
// { status: "fulfilled", value: 3 },
// { status: "rejected", reason: "error" },
// { status: "fulfilled", value: "foo" }
// ]Основні відмінності
Статус промісів
- Promise.all: Відхиляється, якщо будь-який з промісів відхилено.
- Promise.allSettled: Завершується, коли всі проміси завершені, незалежно від їх статусу.
Результат
- Promise.all: Повертає масив значень, якщо всі проміси виконані.
- Promise.allSettled: Повертає масив об'єктів, які містять статус і значення/причину для кожного промісу.
Висновок
Розуміння різниці між Promise.all і Promise.allSettled є важливим для ефективної обробки асинхронних операцій у JavaScript. Вибір між ними залежить від того, чи потрібно вам обробляти лише успішні проміси або враховувати всі результати.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.