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.