Ais*_*war 8 javascript asynchronous server-side node.js node-async
我在node.js中编写了一个执行网络操作的模块.我写了一个使用这个模块的小脚本(check下面的变量).它看起来像这样:
check(obj, function (err, results) {
// ...
console.log("Check completed");
});
Run Code Online (Sandbox Code Playgroud)
现在这是有趣的事情.当此代码作为mocha测试的一部分执行时,测试将按预期退出.我看到打印了日志语句,并且进程退出.
当代码作为独立节点脚本执行时,会打印日志语句,但进程只会挂起.
当我尝试调试它并使用--debug-brk和启动程序时node-inspector,它会提前退出!我看到了这个process.on 'exit'.当模块中的一些内部回调尚未被调用时,它退出.所以上面的日志语句也没有打印出来.
我现在卡住了,不知道为什么会这样.有没有人见过类似的行为?
Pet*_*ons 13
当您将其作为脚本运行并且在"完成"时挂起,这意味着节点仍然具有等待事件的回调.Node不知道那些事件不会再发生了.您可以在process.exit()知道是时候退出时调用,也可以显式关闭/取消绑定/断开所有内容(网络连接,数据库连接等).如果正确关闭所有内容,则应退出节点.
模块wtfnode(由Nathan Arthur提到)或者为什么是节点运行可以真正有助于跟踪这一点.
| 归档时间: |
|
| 查看次数: |
4756 次 |
| 最近记录: |