js中的for和foreach处理async await时的差异

在使用foreach的时候遇到点小麻烦,特此用几个小例子理顺一下概念,顺便记录一下。

 

 

let a = [1,2,3,4,5];

function delay(){
    return new Promise((resolve)=>{
        setTimeout(resolve,300);
    });
}
function test1(){
    a.forEach((item)=>{
        console.log("start -1");
        console.log(item);
        console.log("end -1");
    });
    console.log("all done - 1");
}

async function test2(){
    a.forEach(async(item)=>{
        console.log("start -2");
        await delay();
        console.log(item);
        console.log("end -2");
    });
    console.log("all done -2 ");
}


function test3(){
    for(let item of a){
        console.log("start -3");
        console.log(item);
        console.log("end -3");
    }
    console.log("all done -3");
}


async function test4(){
    for(let item of a){
        console.log("start -4");
        await delay();
        console.log(item);
        console.log("end -4");
    }
    console.log("all done -4");
}

test1的输出如下:

9e0b50da9dfa3d6a86f2d153b91c878670e.jpg

 

test2的输出如下:

f23dc7dae326892285fd81af0714beebfcf.jpg

 

test3的输出如下:

b3ea6bfba1e42cf50461d5dbc0df1fd665e.jpg

 

test4的输出如下:

810ad6908f9c86bf609ed166ab8cbad3393.jpg

 

 

foreach本身是同步的,但如果foreach中加了async和await,就变相让这个foreach变成了异步。

如果要在循环中处理async和await方法,直接使用for就好了

 

转载于:https://my.oschina.net/u/3869289/blog/3066437

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值