实现⼀个promise.all⽅法思路:
1:⾸先明⽩all的⽤法
2:promise.all可以接受⼀个由promise数组作为参数,并且返回⼀个promise实例,
3:promise.all([a,]).then⽅法之后的结果是⼀个数组,返回的数组是参数中依次执⾏的返回值4: 参数中的promise有⼀个失败则全部失败
// 判断传递进来数组是否是promise,不是promise直接返回了
const isPromise = value => typeof value.then === 'function'
Promise.all = function(promises){
return new Promise((resolve,reject) => {
let arr = []
let idx = 0;
const processData = (key,data) => {
arr[key] = data;
if(++idx === promises.length){
// 如果都成功了返回这个数组
resolve(arr)
}
}
for(let i=0;i< promises.length;i++){
let result = promises[i];
typeof的用法
if(isPromise(result)){
// 如果是promise ,通过then返回结果
result.then(data => {
processData(i,data) // 让结果和索引对应上
},reject)
}else{
processData(i,result)
}
}
})
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。