为什么 NodeJs 即使异步运行也无法处理密集型 CPU 任务



我不明白的是,nodejs 是异步的,所以我运行多个任务不管它们需要多长时间,因为代码解析器继续执行其他任务,当长任务完成时它会通过回调函数让我知道,那么 CPU 密集型任务的阻塞在哪里?即使一个任务需要 10 秒,Js 中的其他代码行也会继续执行并启动其他任务。由于 NodeJs 只使用 4 个线程来完成繁重的任务,我知道所有这些线程都会很忙,所以这里有一个场景,为什么不对 nodejs 使用繁重的 cpu 任务,对吗?

var listener = readAsync("I/O heavy calculation", function(){
   console.log("I run after the I/O is done."); 
 })
//The parse will send the request and pass to the next line of code
console.log("I run before I/O request is done")

我希望全局声明的控制台.log在回调函数之前运行。

Nodejs 程序在设计上是单线程的。它优先考虑事件循环中最重要的应用。有一些方法可以大规模优化性能。例如,在 node js 中内置了一个集群模块,用于将相同的节点客户端分配给不同的工作线程。

https://nodejs.org/en/blog/release/v10.5.0/从节点 10.5 开始,有多线程支持,但它是实验性的。

最新更新