Promise 执行顺序

2018-07-23  本文已影响0人  bby365
const timeout = ms => new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve();
  }, ms);
});

const ajax1 = () => timeout(2000).then(() => {
  console.log('1');
  return 1;
});

const ajax2 = () => timeout(1000).then(() => {
  console.log('2');
  return 2;
});

const ajax3 = () => timeout(2000).then(() => {
  console.log('3');
  return 3;
});

const mergePromise = ajaxArray => {
  // 在这里实现你的代码
  return new Promise((resolve,reject) =>{
    var data = [];
    var len = ajaxArray.length;
    function getData(i){
      if(i < len){
        ajaxArray[i]().then((value)=>{
          data.push(value);
          i++
          getData(i);
        });
      }else{
        resolve(data)
      }
    }
    getData(0); 
  })
};

mergePromise([ajax1, ajax2, ajax3]).then(data => {
  console.log('done');
  console.log(data); // data 为 [1, 2, 3]
});

使用 asyncawait

async function mergePromise (ajaxArray) {
 var data = [];
 var len = ajaxArray.length;
 for(var i = 0;i<len;i++){
   var v = await ajaxArray[i]();
   data.push(v);
 }
 return data;
}
上一篇 下一篇

猜你喜欢

热点阅读