SOURCE

const time = (timer) => {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve()
    }, timer)
  })
}
const ajax1 = () => time(2000).then(() => {
  console.log(1);
  return 1
})
const ajax2 = () => time(1000).then(() => {
  console.log(2);
  return 2
})
const ajax3 = () => time(1000).then(() => {
  console.log(3);
  return 3
})

async function mergePromise (ajaxArr) {
    let resultArr = new Array(ajaxArr.length);
    for (let i = 0; i < ajaxArr.length; i++) {
        resultArr[i] = await ajaxArr[i]();
    }
    return resultArr;
}

// function mergePromise (ajaxArray) {
//   // 存放每个ajax的结果
//   const data = [];
//   let promise = Promise.resolve();
//   ajaxArray.forEach(ajax => {
//   	// 第一次的then为了用来调用ajax
//   	// 第二次的then是为了获取ajax的结果
//     promise = promise.then(ajax).then(res => {
//       data.push(res);
//       return data; // 把每次的结果返回
//     })
//   })
//   // 最后得到的promise它的值就是data
//   return promise;
// }

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

// 要求分别输出
// 1
// 2
// 3
// done
// [1, 2, 3]
console 命令行工具 X clear

                    
>
console