1. 程式人生 > >【阿里前端測評題】實現 mergePromise 函式,把傳進去的陣列順序先後執行,並且把返回的資料先後放到陣列(data)中

【阿里前端測評題】實現 mergePromise 函式,把傳進去的陣列順序先後執行,並且把返回的資料先後放到陣列(data)中

const timeout = ms => new Promise((resolve) => {
    setTimeout(() => {
      resolve();
    }, ms)
  });

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

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

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

  const mergePromise = ajaxArray => {
    let result = []
    let promise = Promise.resolve()
    ajaxArray.forEach(function (item) {
      promise = promise.then(item)
      result.push(promise)
    })
    return Promise.all(result)
  };

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