为什么我的无限循环在异步函数中阻塞?

0 javascript asynchronous async-await es6-promise

我不明白如何使用异步函数.

为什么下面的代码会停止主线程?

async function foo() {
  for (;;) {}
}
foo();
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 7

async关键字不作同步异步代码,慢跑代码快,或阻断代码非阻塞.

它只是使函数返回一个promise并提供(使用await关键字)一种与其他promises交互的机制,就像有同步一样.

你的函数开始循环,然后四处走动.

它没有到达函数的末尾,这将结束函数并解决它返回的promise.

await在等待等待的承诺得到解决时,它没有达到关键字并暂停.

只是四处走动.

如果你实际上在循环中做了一些计算成本很高的东西而你想要进入后台,那么你可以使用Node.js 工作线程或基于浏览器的Web Worker来完成它.