我可以在回调函数中运行循环(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;
}
});
现在,我的疑问是,主线程会一直等到上面的while循环执行完吗?
发布于 2013-05-04 19:11:46
你的主线程会被回调函数中的循环阻塞。这是因为回调函数只是延迟到完成,然后,它们被推入JavaScript事件循环中,并在线程空闲时执行。简而言之,node (和JavaScript)中的所有事情都发生在一个线程中(正常执行、回调、超时等)。
使用JavaScript将函数执行到另一个线程的唯一方法是手动将其推入另一个线程。在浏览器中是一个web worker,在节点上是一个集群。
发布于 2013-05-04 19:10:27
你可以有这样的东西
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;
}
});
或者,可以使用异步模块,使用function async.parallel
https://stackoverflow.com/questions/16377874
复制