Promise.all 允许定义的 Promise 按照数组传入,并依次执行 Promise 并将结果保存在一个列表中,返回一个Promise.
let p1 = new Promise((resolve, reject)=>{ resolve("只要有爱,"); }); let p2 = new Promise((resolve, reject)=>{ resolve("在哪里都是天堂!") }); let p3 = Promise.reject("不要让恨遮蔽了双眼!"); Promise.all([p1, p2]).then(res=>{ console.log(res) }) Promise.all([p1, p2, p3]).then(res=>{ console.log(res); }).catch(err=>{ console.log(err); }) // output // [ ‘只要有爱,‘, ‘在哪里都是天堂!‘ ] // 不要让恨遮蔽了双眼!
Promise.myAll = function(promises){ return new Promise((resolve, reject)=>{ let res = []; promises.forEach((promise, index)=>{ promise.then(data=>{ res.push(data); if(index===promises.length-1){ resolve(res); } }).catch(err=>{ reject(err); }) }); }) } Promise.myAll([p1, p2]).then(res=>{ console.log(res) }) Promise.myAll([p1, p2, p3]).then(res=>{ console.log(res); }).catch(err=>{ console.log(err); })
原文:https://www.cnblogs.com/apple78/p/12979033.html