【阿里前端測評題】實現 mergePromise 函式,把傳進去的陣列順序先後執行,並且把返回的資料先後放到陣列(data)中
阿新 • • 發佈:2019-01-02
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] });