gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 14:23:30 26 4
gpt4 key购买 nike

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

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com