// all
function myAll(iterators) {
const promises = Array.from(iterators);
const len = promises.length;
let count = 0;
let results = [];
return new Promise((resolve, reject) => {
promises.forEach((v, i) => {
Promise.resolve(v).then(value => {
count++;
results[i] = value;
if (count === len) {
resolve(results)
}
}).catch(e => {
reject(e);
})
})
})
}
var p1 = Promise.resolve('a');
var p2 = Promise.resolve('b');
var p3 = Promise.resolve('c');
myAll([p1, p2, p3]).then(function (value) {
console.log(value);
})
// race
function myRace(iterators) {
const promises = Array.from(iterators);
const len = promises.length;
return new Promise((resolve, reject) => {
promises.forEach(v => {
v.then(value => {
resolve(value)
},reason => {
reject(reason)
})
})
})
}
var p1 = Promise.resolve('a');
var p2 = Promise.resolve('b');
var p3 = Promise.reject('c');
myRace([p1, p2, p3]).then(function (value) {
console.log(value);
})
手动实现promise.all和promise.race
最新推荐文章于 2024-02-13 08:15:00 发布