Promise.all
当所有的子Promise都完成,该Promise完成,返回值是全部值得数组。有任何一个失败,该Promise失败,返回值是第一个失败的子Promise结果。
function PromiseAll(arr) {
const list = Array.from(arr);
let cur = 0;
const data = [];
return new Promise((resolve, reject) => {
for (let i = 0; i < list.length; i++) {
list[i]
.then((res) => {
cur++;
data.push(res);
if (cur == list.length) {
resolve(data);
}
})
.catch((err) => {
reject(err);
});
}
});
}
Promise.race
有任意一个完成就算完成
function PromiseRace(arr) {
return new Promise((resolve, reject) => {
for (let i = 0; i < arr.length; i++) {
Promise.resolve(arr[i])
.then((data) => {
resolve(data);
})
.catch((err) => {
reject(err);
});
}
});
}