在使用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的输出如下:
test2的输出如下:
test3的输出如下:
test4的输出如下:
foreach本身是同步的,但如果foreach中加了async和await,就变相让这个foreach变成了异步。
如果要在循环中处理async和await方法,直接使用for就好了