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.
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); }); }); } Edge cases: handle the empty array (resolve immediately with []).
Reject as soon as any single promise rejects.