Open wangjs-jacky opened 10 months ago
Promise.race
实践
可能经过 Promise.all
的练习后,该函数的实现就非常简单了。
这里说个小技巧,该函数常可用于超时异步响应的拦截处理。
Promise.myRace = function (_promiseList) {
return new Promise((resolve, reject) => {
/* promiseList 是一个可迭代对象 */
const promiseList = Array.from(_promiseList);
promiseList.forEach((p) => {
Promise.resolve(p).then((res) => {
resolve(res);
}, (err) => {
reject(err);
})
})
})
}
Promise.allSettled
实践
Promise.myAllSettled = function (_promiseList) {
return new Promise((resolve, reject) => {
/* promiseList 是一个可迭代对象 */
const promiseList = Array.from(_promiseList);
const result = [];
let resolveCount = 0;
promiseList.forEach((p, index) => {
Promise.resolve(p).then((res) => {
resolveCount++;
result[index] = {
status: "fulfilled",
data: res
}
if (resolveCount === promiseList.length) {
resolve(result)
}
}, (err) => {
resolveCount++;
result[index] = {
status: "rejected",
reason: err
}
if (resolveCount === promiseList.length) {
resolve(result)
}
})
})
})
}
只需要掌握
Promise.all
的写法,其余函数,这几个函数仅做练习测试案例如下:
Promise.race
Promise.allSettled