在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網(wǎng)絡(luò)安全/ async await 并發(fā)執(zhí)行的問題

async await 并發(fā)執(zhí)行的問題

async sleep(i){
    return new Promise((resolve, reject) => {
        setTimeout(function (){
            resolve(i);
        }, 1000);
    });
}

async start(finsh_callback){

    console.time('g');
    for (let i = 0; i < 5; i++) {
        let res = await this.sleep({
            i:i,
        });
        console.log(res);
    }
    console.timeEnd('g');
}

執(zhí)行 start 函數(shù)
輸出

{ i: 0 }
{ i: 1 }
{ i: 2 }
{ i: 3 }
{ i: 4 }
g: 5003.286ms

本來5個(gè)任務(wù),如果異步同時(shí)進(jìn)行,也就是1秒左右。
現(xiàn)在改成了async await 的寫法之后,變成了一個(gè)接著一個(gè)進(jìn)行,花費(fèi)了5秒。如果我想多個(gè)并發(fā)執(zhí)行,如何解決?

回答
編輯回答
初念

自己找到答案了

let tasks = [];
for (let i = 0; i < 5; i++) {
    tasks.push(this.sleep({
        i:i,
    }));
}
await Promise.all(tasks);

參考文章:https://segmentfault.com/a/11...

2017年3月28日 08:06
編輯回答
笑忘初
for (let i = 0; i < 5; i++) {
        (async () => {let res = await sleep({
            i:i,
        });
        console.log(res);})()
    }

這個(gè)也可以實(shí)現(xiàn),但是和 Promise.all是有本質(zhì)區(qū)別的

2017年1月2日 13:03