要点:
- 知道要在Promise上写而不是在原型上写
- 知道all的参数(Promise 数组)和返回值(新Promise对象)
- 知道用数组来记录结果
- 知道只有一个reject就整体reject
Promise.myAll = function(list){
const results = []
let count = 0 // 表示成功的数量 当成功的数量达到list的长度-1时 表示全部成功
return new Promise((resolve,reject)=>{
list.map((promise,index)=>{
promise.then((r)=>{
result[index]=r; //先后顺序 什么时候成功不确定 所以不能push
count+=1
if(count === list.length){
resolve(results)
}
},(reason)=>{
reject(reason)
})
})
}) //决定新的promise什么时候成功 什么时候失败
}