在Node.js中,如果我正在写一个长时间运行的函数,我应该使用setTimeout

时间:2011-08-18 07:26:52

标签: javascript node.js

或其他什么来排队我的其余功能?并使用回调或节点自动处理?

我想我需要启动我的代码,如果还有其他事情需要发生,我应该放弃我的函数控制来给其他事件控制。是这样的吗?或者我可以吝啬,节点会在我用足够的时间后切断我的功能吗?

感谢。

2 个答案:

答案 0 :(得分:5)

如果您的长时间运行功能执行了大量I / O,请确保以非阻塞方式执行此操作。这就是node.js实现并发的方式,即使它只有一个线程:只要任何任务需要等待某事,另一个任务就会获得CPU。

如果你的长时间运行的功能需要不间断的CPU时间(或者不能异步地进行I / O),那么你可能需要分出一个单独的进程,否则每个人都必须等到你完成。

  

或者我可以吝啬,节点会在我用足够的时间后切断我的功能吗?

没有。这是完全合作的多任务处理。节点不能抢占你。

答案 1 :(得分:3)

您应该将长时间运行的函数或执行时间较长的代码放入单独的进程中,因为它可以在执行此代码/函数时阻止其他传入请求。来自node.js网站:

  

但是多处理器并发呢?不是线程   将程序扩展到多核计算机的必要性?你可以开始新的   通过child_process.fork()处理这些其他进程   并行安排。

我建议观看这些文章/演示文稿,以便对此主题进行更全面的了解: