为什么循环中使用同步总是没有效果呢?
总是先打印9999
后打印----
我想执行完里面的接口调用然后执行打印怎么办呢?
回答
原因在于二者不是处在同一个任务队列 。9999
处于主线程的当前同步代码块,await解析的Promise对象处于微任务队列。基于主线程执行完毕,才会接着由事件循环器执行当前批次微任务的事实。
要么将9999
打印任务与await 任务置于同一批队列,比如于置await任务后,或置于await任务体内。要么干脆,都处于同步代码块,比如去掉 await, 但这样你需要外部手动解析Promise对象。
forEach 改成 for 循环,例如
async function fn(){ for(i=0;i<3;i++){
await console.log('for '+i)
}
console.log('end')
}
fn()//
以上是 为什么循环中使用同步总是没有效果呢? 的全部内容, 来源链接: utcz.com/a/42070.html