SOURCE

function promiseAll(params){
    return new Promise((resolve,reject)=>{
        let resultCount = 0;
        let result =[];
        params.forEach((item)=>{
            item.then((res)=>{
               resultCount++;
               result.push(res);
               if(resultCount == params.length){
                   resolve(result);
               }
            }).catch((rej)=>{
               reject(rej)   
            });
        })  
    })
}


let p1 = new Promise((resolve, reject) => {
  resolve('p1')
})
let p2 = new Promise((resolve, reject) => {
  resolve('p2')
})
let p3 = Promise.reject('p3 error');
let p4 = Promise.reject('p4 error')

promiseAll([p1,p2,p3]).then((res)=>{
    console.log(res);
}).catch((reject)=>{
    console.log(reject);
})
console 命令行工具 X clear

                    
>
console