在使用foreach的时候遇到点小麻烦,特此用几个小例子理顺一下概念,顺便记录一下。javascript
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的输出以下:java
test2的输出以下:异步
test3的输出以下:async
test4的输出以下:code
foreach自己是同步的,但若是foreach中加了async和await,就变相让这个foreach变成了异步。blog
若是要在循环中处理async和await方法,直接使用for就行了ip