Promise.all 接收一个 promise 对象的数组,等所有都完成之后,统一执行success;
Promise.race 也接受一个 Promise 对象的数组,但是只要一个对象完成,就执行 success
示例:
let p1 = new Promise((resolve,reject) => {
resolve('p1');
});
let p2 = new Promise((resolve,reject) => {
resolve('p2');
})
Promise.all([p1,p2]).then(res => {
console.log(res);
})
// ['p1','p2']
Promise.race([p1,p2]).then(res => {
console.log(res);
})
// p1
使用 Promise 实现简单的 all
function promiseAll(promises) {
return new Promise((resolve,reject) => {
let count = 0;
let len = promises.length;
let res = new Array(len);
for (let i=0;i<len;++i) {
promises[i].then(value => {
count ++;
res[i] = value;
if (count === len) {
return resolve(res);
}
}, error => {
reject(error);
})
}
})
}