@maymie
Вы можете вызвать Promise.all() для неопределенного количества функций, используя spread оператор ... для передачи массива функций в Promise.all(). Например, если у вас есть массив функций funcs, вы можете вызвать Promise.all() следующим образом:
1 2 3 4 5 |
Promise.all([...funcs]).then((results) => { // обработка результатов }).catch((err) => { // обработка ошибок }); |
В этом примере ...funcs разворачивает массив функций в список аргументов, передаваемых в Promise.all(). Promise.all() вернет Promise, который разрешится, когда все переданные промисы разрешатся. Результатом разрешенного Promise будет массив с результатами разрешенных промисов в том же порядке, в котором они были переданы.
Обратите внимание, что если один из переданных промисов отклоняется, разрешенный Promise Promise.all() тоже будет отклонен, и выполнение остановится.
@maymie
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
const func1 = () => {
return new Promise((resolve, reject) => {
// выполнение функции 1
resolve('Результат функции 1');
});
};
const func2 = () => {
return new Promise((resolve, reject) => {
// выполнение функции 2
resolve('Результат функции 2');
});
};
const func3 = () => {
return new Promise((resolve, reject) => {
// выполнение функции 3
resolve('Результат функции 3');
});
};
const funcs = [func1(), func2(), func3()];
Promise.all([...funcs]).then((results) => {
console.log(results); // ["Результат функции 1", "Результат функции 2", "Результат функции 3"]
}).catch((err) => {
console.error(err);
});
|
В этом примере создается массив функций func1, func2 и func3. Затем используется spread оператор, чтобы передать этот массив в Promise.all(). Массив результатов будет иметь то же самое количество элементов и в том же порядке, что и переданные функции, и будет содержать их результаты.