promise.all添加进度的方法

235 阅读1分钟
/**
 * 模拟异步请求
 */
function timeout(time){
  return new Promise((resolve)=>{
    setTimeout(()=>{
      resolve(time);
    },time);
  })
}
function allWithProgress(requests, callback){
   let index = 0;
   requests.forEach(item=>{
     item.then(()=>{
       index ++;
       const progress = index*100/arr.length;
       callback(progress);
     })
   });
   return Promise.all(requests);
}
const arr = [timeout(1000),timeout(2000), timeout(3000), timeout(4000), timeout(5000),timeout(6000),timeout(7000), timeout(8000), timeout(9000), timeout(10000)];

allWithProgress(arr, function(progress){
	console.log(progress);
}).then(res=>console.log(res))