手写promise.all

135 阅读1分钟

冷知识

什么是迭代器?


如何迭代器转换成数组?
   方法一: Array.from(迭代器);
   方法二: [...迭代器]
   
如何将常量转换成promise?
     Promise.resolve(常量);
  
  

首先Promise.all接受的是可以遍历的迭代器,返回的是新的promise对象

functin pALL (_promise) {
    return new Promise((resolve,reject) => {
        const promise = Array.from(_promise); //迭代器转化成数组
        const r = []; //接受所有接口返回的数据
        const len = promise.length;
        let count === 0;
        for(let i = 0; i < len; i++) {
            //数组中有可能是常量,所以必须先全部转换成promise对象
            Promise.resolve(promises[i]).then(o => {
                r[i] = o; //确定对应的位置是对应的请求接口的函数
                if(i === (len - 1)){
                    resolve(r); //最后一次循环将resolve出去
                }
            }).catch(e => reject(e)) //监听报错并返回报错
        }
    })
}