我可以在回调函数中运行循环(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循环?
答案 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