js promise, 异步处理任务, 并按顺序输出

50 阅读1分钟
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;});//并且把返回的数据先后放到数组data中const timeout = ms => new Promise((resolve, reject) => {    console.log(11111111)    setTimeout(() => {        resolve();    }, ms);});function mergePromise2(ajaxArray) {    let promiseArr = []     let arr = [];    let index = 0    return new Promise((res,rej) => {        ajaxArray.forEach((promise,i) => {            let p = promise()            promiseArr[i] = p            Promise.resolve(promiseArr[i-1] || 0).then((tag)=>{                p.then((val)=>{                    console.log("🚀 ~ file: test14.js:33 ~ Promise.resolve ~ val:", i, val)                    arr[i] = val                    index++                    if(index == 3){                            res(arr);                    }                })            })    })       });  }  mergePromise2([ajax1, ajax2, ajax3]).then(data => {    console.log('done');    console.log(data); // data[1, 2, 3]});