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]
});
使用 async
和 await
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;
}
网友评论