2013-05-26 126 views
-1

node.js,你如何调用一个函数,使其在后台运行?例如:在node.js中异步调用函数?

work = function(){ 
    for (var i=0; i<1000000; ++i); 
    return "world!"; 
}; 

spawn(work).then(console.log); 
console.log("Hello "); 

应该输出你期望的结果。

注意:不一定遵循这种模式。

+0

你问了一个新的线程,或者仅仅是一个异步执行?单独的线程是有问题的,因为它们不能共享变量,因此它们不能从现有函数创建。 –

+0

你的意思是单独的进程? – MaiaVictor

+0

至少有三个单独的概念:单独的进程(OS级别的单独内存,并行执行和其他许多内存),单独的线程(公共内存(不被看作节点线程通用),并行执行),或者只是异步执行做些什么,但不能与其他任务并行) –

回答

1

Node.JS中的任何内容都不会在后台运行。这是因为JS不能多线程。然而,它有能力背靠背运行代码,例如同时运行2个for循环,将导致第一个for循环迭代一个设定数量,然后第二个循环将迭代,并且它们将交换处理能力以使它看起来像就好像方法可以同时运行一样。

Node.JS如果我没有弄错这个回调函数。

“回调

回调是在node.js中的异步操作的基本成语。当大多数人谈论的回调,他们的意思是作为最后一个参数,以异步函数传递的功能。回调是再后来调用该函数产生的任何返回值或错误信息有关详细信息,请参阅回调”

随着越来越多的例子和信息发现这里的文章 -

http://docs.nodejitsu.com/articles/getting-started/control-flow/how-to-write-asynchronous-code

0

尝试查看child_process功能。

我目前使用child_process来fork进程和并行操作。最好的部分是(不像在C或C++中工作),节点为你做了很多痛苦的工作。

更多(附注),您可以在进程之间来回传递JavaScript代码,并为计算密集型任务构建功能强大的多CPU,多主机和多进程应用程序。不要让负面的声音告诉你,否则...节点是伟大的,它可以做你看起来问的东西。

退房http://nodejs.org/api/child_process.html