我不明白如何使用异步函数。
为什么下面的代码会停止主线程?
async function foo() {
for (;;) {}
}
foo();
最佳答案
async
关键字和一般的 Promise 不会使同步代码变得异步、使运行缓慢的代码变得快速或使阻塞代码变成非阻塞。
async
只是让函数返回一个 Promise,并提供(使用 await
关键字)一种与其他 Promise 交互的机制,就像同步一样。
你的函数开始一个循环,然后一直循环下去。
它不会到达函数的末尾,这将结束函数并解析它返回的 promise 。
它没有到达 await
关键字,并在等待等待的 promise 得到解决时暂停。
它只是转来转去。
如果您实际上在循环中执行一些计算成本较高的操作,并且您想将其插入后台,那么您可以使用 Node.js Worker Thread或基于浏览器的Web Worker去做这件事。
关于javascript - 为什么我的无限循环在异步函数中时会阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54478255/