gpt4 book ai didi

javascript - 通过简单示例轻描淡写 Node.js 异步

转载 作者:行者123 更新时间:2023-11-28 20:03:16 26 4
gpt4 key购买 nike

(摘自考试)

    setTimeout(function(){
console.log("A");
},1000);

//Some cpu heavy calculations
console.log("B");

假设cpu代码需要0.5分钟,首先应该打印什么?

CPU计算是否必须以异步方式运行?或者我们不能这样假设?据我了解,node.js 以同步方式运行代码,除非其特定的异步函数,我错了吗?

谢谢,如果问题太明显,抱歉......

最佳答案

Node 是单线程的。因此任何 CPU 密集型任务都会阻塞执行。无论哪种方式,B 都会在 A 之前打印。

异步函数只是将任务的执行延迟到线程的稍后部分。举个例子:

setTimeout(function() {
console.log('A');
}, 1000);

setTimeout(function() {
// CPU intensive calculations
}, 2000);

console.log('B');

您将看到的是BA,然后是计算。但每一个都在阻挡。不要将“异步”与“线程”混淆。

由于底层库的存在,Node 可以以非阻塞的方式做很多事情 libuv它是线程化的并在后台为您处理所有 I/O。如果用户愿意学习如何编写利用 libuv 线程池的 native (即 C++)模块,则可以获得相同的结果。他们可以以同样的非阻塞方式推迟 CPU 密集型工作。

关于javascript - 通过简单示例轻描淡写 Node.js 异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263757/

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