当 Node.js 清空其事件循环并且没有其他工作要调度时,则 'beforeExit' 事件会被触发。 通常,当没有工作被调度时,则 Node.js 进程会退出,但是在 'beforeExit' 事件上注册的监听器可以进行异步的调用,从而使 Node.js 进程继续。

    监听器回调函数被调用时会传入 [process.exitCode] 的值作为唯一的参数。

    对于导致显式终止的情况(例如调用 [process.exit()] 或未捕获的异常),则不会触发 'beforeExit' 事件。

    除非打算调度额外的工作,否则不应该使用 'beforeExit' 代替 'exit' 事件。

    1. process.on('beforeExit', (code) => {
    2. console.log('进程 beforeExit 事件的退出码: ', code);
    3. });
    4. process.on('exit', (code) => {
    5. console.log('进程 exit 事件的退出码: ', code);
    6. });
    7. console.log('此消息会最先显示');
    8. // 打印:
    9. // 此消息会最先显示
    10. // 进程 beforeExit 事件的退出码: 0
    11. // 进程 exit 事件的退出码: 0