Trung BìnhJavaScript iconJavaScript

Implement Promise.all từ đầu?

Promise.all resolve khi tất cả promises resolve; reject ngay khi có 1 promise reject.

js
function promiseAll(promises) {
  return new Promise((resolve, reject) => {
    if (promises.length === 0) { resolve([]); return; }
    const results = [];
    let count = 0;
    promises.forEach((p, i) => {
      Promise.resolve(p)
        .then(val => { results[i] = val; if (++count === promises.length) resolve(results); })
        .catch(reject);
    });
  });
}

Lưu ý: handle empty array (resolve ngay []).

Reject ngay khi 1 promise reject.

Xem toàn bộ JavaScript cùng filter theo level & chủ đề con.

Mở danh sách JavaScript