Skip to content
On this page

Promise.all

javascript
function promiseAll(pArr) {
  const n = pArr.length;
  const res = [];
  let count = 0;

  return new Promise((resolve, reject) => {
    const _then = (idx, v) => {
      res[idx] = v;
      if (++count === n) {
        resolve(res);
      }
    };
    for (let i = 0; i < n; i++) {
      const p = pArr[i];
      if (p instanceof Promise) {
        p.then((r) => _then(i, r)).catch((err) => reject(err));
      } else {
        _then(i, p);
      }
    }
  });
}