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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复