循环在node.jscallback函数中

我可以在callback函数中运行一个循环(while,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循环执行?

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

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

你可以有这样的事情

 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模块,使用async.parallel函数