Node.js 除非执行主代码,否则永远不会触发回调

Node.js callback never fires unless the main code is executed

在node.js中,当一个函数调用后有一个死循环并且也得到一个回调函数作为参数时,即使操作完成,回调也不会触发。例如:

database.insert(data, function() {
    //do stuff
})

while(1) {
    //do stuff
}

谢谢。

编辑:拼写错误

Node.js是单线程的,所以一次只能做一件事。如果您 运行 是一项非常 cpu 密集型工作,也许您可​​以使用 child_process?

在另一个流程中完成

否则,实际上并不推荐这样做,您可以将繁重的工作分解为对同一函数的多次调用并使用 process.nextTick(),即:

function compute() {
     // do work here
     process.nextTick(compute);
}

compute();

这将允许事件循环在您的计算之间处理其他任务。