循环在node.js回调函数中

时间:2013-05-04 18:59:39

标签: javascript node.js

我可以在回调函数中运行循环(while,for,dowhile等)。以下是示例代码:

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线程是否一直等到执行上面的while循环?

2 个答案:

答案 0 :(得分:2)

您的主线程将被回调函数内的循环阻止。这是因为回调函数只是延迟到完成,然后,它们被推入JavaScript事件循环并在线程空闲后执行。简单来说,节点(和JavaScript)中的所有内容都发生在一个线程中(正常执行,回调,超时等)。

使用JavaScript将函数执行到另一个线程的唯一方法是手动将其推送到另一个线程。在浏览器中,它将是一个Web工作者,在节点上是一个集群。

答案 1 :(得分:0)

你可以有这样的东西

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