概述
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 的实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复