当我使用node.js时,我应该使用循环asynchronous方式吗?

我用express来testingnode.js。

从理论上讲,如果我在没有任何callback的情况下对“for循环”执行一些非常繁重的计算,

它被阻塞,其他请求应该被忽略。

但就我而言,定期的“for循环”

for(var i=0;i<300000;i++) { console.log( i ); } 

不做任何请求块,但只是高CPU负载。

它也接受其他请求。

但为什么我应该使用其他一些方法来使这些非阻塞如

 process.nextTick() 

或者,node.js是否使用process.nextTick()作为默认函数来处理基本循环函数(for,while)?

节点在一个带有事件循环的单线程中运行,正如你所说的那样,当你的for循环执行时,不会有其他的处理。 底层的操作系统TCP套接字可以很好地接受传入的连接,但是如果节点忙于循环逻辑,那么请求本身将不会被处理,直到之后。

如果您绝对必须在Node中运行一些长时间运行的stream程,那么您应该使用单独的工作进程来执行计算,并让主事件循环进行请求处理。

节点不会用process.nextTick()包装循环。

这可能是你的程序继续接受新的连接,因为console.log正在将控制权交还给主事件循环。 因为这是一个I / O操作。