【发布时间】:2012-06-30 09:19:30
【问题描述】:
Node js 模块在操作过程中请求远程服务上的一些资源,最好在退出时释放。我们知道有很好的:
process.on('exit', function() {
// ...
});
但是据说它不会等待任何异步操作完成。所以问题是是否有任何解决方法(应该有一些,因为它是相当广泛的用例)?也许可以开始单独的过程或其他什么?..
【问题讨论】:
标签: node.js optimization process
Node js 模块在操作过程中请求远程服务上的一些资源,最好在退出时释放。我们知道有很好的:
process.on('exit', function() {
// ...
});
但是据说它不会等待任何异步操作完成。所以问题是是否有任何解决方法(应该有一些,因为它是相当广泛的用例)?也许可以开始单独的过程或其他什么?..
【问题讨论】:
标签: node.js optimization process
我见过的唯一解决方法是添加一个等待循环,而不是从 .on('exit', 函数完成/返回,直到全局更新一个属性。 在设计方面完全是一个笨拙的工作,非常糟糕的做法,但我已经看到它适用于短调用(我认为有一些超时,但我从不费心去研究细节)。
【讨论】:
我认为您可以/应该在on('exit') 之前通过收听ctrl-c 信号来进行清理,就像在这个post 中一样。
【讨论】:
SIGINT 事件在ctrl+c 上引发,放置一个异步操作并在异步的.then 中调用exit 事件可能会起作用,但是系统崩溃怎么办?它不会引发 SIGINT 事件,但不会调用 exit 和异步操作,有什么想法吗?