【发布时间】:2021-06-28 10:52:47
【问题描述】:
我不明白如何使用异步函数。
为什么下面的代码会停止主线程?
async function foo() {
for (;;) {}
}
foo();
【问题讨论】:
-
异步代码不代表多线程,代码仍然在一个线程中运行。异步只是某种协作式多任务处理,而不是多线程处理。
-
@Ivar — 现在大多数现代 JS 实现都支持一种线程形式。只是
async关键字不是这样的。 -
浏览器有一个事件循环。当您调用异步函数时,该函数将被安排在下一个循环中运行,但仍然是单线程的。
-
@behzadbesharati 调用
async函数未安排执行。它将立即执行(如您在此 fiddle 中所见)。返回的 Promise 将在稍后的状态下解析。
标签: javascript asynchronous async-await es6-promise