在node.js的回调函数
循环能否运行在回调函数的循环(同时,对,dowhile等)。下面是一个示例代码:在node.js的回调函数
var execute = function (data,callback)
{
//do something with data
callback();
}
execute (data,function(error,returnDataArray)
{
var boo = true;
while(boo)
{
//do something with returnDataArray
if (returnDataArray.length == 10)
boo=false;
}
});
现在,我的疑问是,做的主要工作Node.js的线程等待,直到上述在执行循环?
你可以有这样的事情
var execute = function (data,function(error,returnDataArray)
{
//do something with data
var boo = true;
while(boo)
{
//do something with returnDataArray
if (returnDataArray.length == 10)
boo=false;
}
});
,或者您可以使用异步模块,使用功能async.parallel
+1异步模块 - 不循环,尝试的map/reduce或递归,而不是循环。地图lok喜欢它会为你工作 – regretoverflow 2013-05-04 19:14:05
@NikMartin:请upvote,如果你喜欢的建议之一。 – V31 2013-05-04 19:16:19
如果不知道循环内部是什么,就不能说“不循环”。循环在节点中不被禁止。 – 2013-05-04 19:24:33
你的主线程由一个回调函数内部循环发生的历史被阻止。这是因为回调函数只是延迟到完成,然后,它们被推入JavaScript事件循环并在线程空闲时执行。简而言之,节点(和JavaScript)中的所有内容都发生在单个线程中(正常执行,回调,超时等)。
执行功能与JavaScript的另一个线程的唯一方法是手动将其推入另一个线程。在浏览器中,它将成为Web工作者,并在节点上成为群集。
为什么不节点等待?你的循环太久会引起超时? – 2013-05-04 19:00:53
是的,它会等待,用户一个不同的过程,如果它要永远走... – dandavis 2013-05-04 19:01:53
嗯,你甚至尝试? – 2013-05-04 19:02:48