forEach 中不能有异步代码 否则会直接跳过异步, 先执行后续代码在执行循环内的异步代码块
查阅资料后发现
大概是: forEach 是非同步的循环, 循环内部如果有异步方法, 越过异步方法,先执行循环后的代码, 异步就会被定时器执行;
for 循环是同步的, 会等待异步结束之后再执行循环后的代码
const a = [1,2,3]
function delay(){
return new Promise(resolve=>{
setTimeout(()=>resolve('delay执行完毕'),1000)
})
}
function run(){
a.forEach(item=>{
delay().then(res=>{
console.log(res)
})
})
console.log("函数执行完毕")
}
run()
网友评论