// написать функцию-полифилл promiseAll
 
function myPromiseAll(promises) {
  // Ваш код здесь
}
 
const p1 = Promise.resolve("first");
 
const p2 = new Promise((resolve, reject) =>
  setTimeout(resolve, 1000, "second"),
);
 
const p3 = Promise.resolve("third");
 
const p4 = Promise.reject("err");
 
myPromiseAll([p1, p2, p3, p4]);

**Ответ

function promiseAll(promises) {
  if (promises.length === 0) return Promise.resolve([]);
  const copy = [...promises];
 
  return new Promise((resolve, reject) => {
    let count = 0;
    for (let i = 0; i < promises.length; i++) {
      promises[i]
        .then((res) => {
          copy[i] = res;
          if (++count === promises.length) resolve(copy);
        })
        .catch((err) => reject(err));
    }
  });
}

Назад