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);});}});
}