为什么循环中使用同步总是没有效果呢?


总是先打印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

回到顶部