我是靠谱客的博主 可靠火车,最近开发中收集的这篇文章主要介绍Promise.race 的实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

function isPromise(obj) {
if (!!obj && (typeof(obj) === 'object' || typeof(obj) === 'function') && typeof(obj.then) === 'function') {
return true
} else {
return false
}
}
function newPromiseAll(arr) {
let result = [];
return new Promise( (resolve,reject) => {
for(let i = 0; i < arr.length; i++){
if(isPromise(arr[i])){
arr[i].then(data => {
resolve(data)
}).catch (err => {
resolve(err)
})
} else {
result[i] = arr[i];
}
}
})
}

Promise.all 是所有的 Promise 都执行成功则返回结果,有一个失败就返回失败。

Promise.race 就像他的名字一样"竞赛",取跑得最快的那个 Promise,成功就 resolve,失败就 reject。

所以直接在循环的每个 Promise里的 then 和 catch 里取 resolve 或者 reject,去触发最外层的 Promise。

最后

以上就是可靠火车为你收集整理的Promise.race 的实现的全部内容,希望文章能够帮你解决Promise.race 的实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部