gpt4 book ai didi

node.js - Node.js 如何同时异步和单线程?

转载 作者:搜寻专家 更新时间:2023-10-31 23:57:11 24 4
gpt4 key购买 nike

问题标题基本上说明了一切,但换句话说:
如果主(也是唯一)线程被主代码块占用,什么处理异步函数执行?
< br/>到目前为止,我只发现异步代码在其他地方主线程之外执行,但这具体意味着什么?

编辑:建议Node.js Event loop问题的答案也可能涉及这个主题,但我一直在寻找一个不那么复杂、更具体的答案,而不是对 Node.js 概念的解释。此外,它不会出现在搜索任何类似于“Node 异步单线程”的内容中。

编辑,@Mr_Thorynque:运行查询以从数据库获取数据并将其记录到控制台。没有任何记录,因为 Node 是异步的,不会等待查询完成和数据 填充。 (这只是所要求的示例,不是我问题的一部分)

var = data;
mysql.query(`SELECT *some rows from database*`, function (err, rows, fields) {
rows.forEach(function(row){
data += *gather the requested data*
});
});
console.log(data);

最佳答案

真正归结为 Node 进程(单线程)将工作交给“其他东西”。这可能是操作系统的 I/O 进程,或网络资源或其他任何东西。通过移交它,它释放了它的线程以继续处理下一个内存中的事情。它使用文件句柄来跟踪任何待处理的工作,并在事件循环中将两者结合在一起,并在工作完成时触发回调。

请注意,这也是如果设计不当您可以在自己的代码中阻止处理的原因。如果您的代码运行复杂任务并且交接工作,您将阻塞单个线程。

这是我所能做出的最简单的回答,我认为您的评论中的链接已经很好地解释了细节。

关于node.js - Node.js 如何同时异步和单线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52386381/

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