@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(). Массив результатов будет иметь то же самое количество элементов и в том же порядке, что и переданные функции, и будет содержать их результаты.