在node.js中异步调用函数?

时间:2013-05-26 04:40:04

标签: javascript multithreading node.js asynchronous

node.js中,如何调用函数以便它在后台运行?类似的东西:

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

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

应输出您期望的结果。

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Async是一个实用程序模块,它提供了使用异步JavaScript的直接,强大的功能 https://npmjs.org/package/async

答案 2 :(得分:0)

尝试查看child_process功能。

我目前正在使用child_process来分叉进程并并行化操作。最好的部分是(与在C或C ++中工作不同),节点为您做了很多痛苦的工作。

更多(旁注),您可以在进程之间来回传递JavaScript代码,并为计算密集型任务构建功能强大的多CPU,多主机和多进程应用程序。不要让消极的声音告诉你,否则......节点很棒,它可以做你想要的事情。

查看http://nodejs.org/api/child_process.html