【发布时间】:2017-03-27 05:35:20
【问题描述】:
我一直在尝试在我的进程终止之前执行异步操作。
说“终止”是指终止的所有可能性:
ctrl+c- 未捕获的异常
- 崩溃
- 代码结束
- 任何东西..
据我所知,exit 事件可以做到这一点,但用于同步操作。
阅读 Nodejs 文档后,我发现 beforeExit 事件用于异步操作,但是:
对于导致显式终止的条件,例如调用
process.exit()或未捕获的异常,不会发出 'beforeExit' 事件。'beforeExit' 不应用作 'exit' 事件的替代品,除非打算安排额外的工作。
有什么建议吗?
【问题讨论】:
-
如何将所有代码放在单独的文件中(例如 afterExit.js),当退出事件发生时运行
require('child_process').exec('node afterExit.js');,这只是一个想法 -
@Molda 嘿,我又把这个问题留了一段时间,现在重新开始工作,想像你建议的那样使用和执行外部脚本将是一个简单的解决方案,但我遇到了一个误解如何将任何变量传递给该脚本,因为“afterExit”代码取决于父级的状态,任何帮助将不胜感激!
-
您可以将一些变量作为参数传递,例如
exec('node afterExit.js some_param some_other_param');然后使用process.args访问,或者创建一个包含所需数据的 json 文件并将该文件的路径传递给您的脚本并从 afterExit.js 加载该文件 -
@Molda 经过几天处理
child_processexec,spawn,我回来了。 fork 方法,如果你能看看我刚刚发布的这个问题,我会很高兴stackoverflow.com/questions/41209901/…
标签: node.js asynchronous typescript process terminate