Node.js Express.js关闭挂钩

Node.js Express.js关闭挂钩,node.js,express,Node.js,Express,在Express.js中,是否有方法设置应用程序关闭时要执行的回调函数?您可以这样使用node.js: process.on('exit',function()){ //在这里添加关机逻辑。 }); 当然,退出函数返回后,主事件循环将停止运行,因此您无法从该函数中安排任何计时器或回调(例如,任何I/O必须是同步的)。存在: 如果您需要访问当前作用域中的某些内容,您可以像下面的回答那样bind():但是您可能需要绑定this express团队推荐以下套餐: 下面的答案在日常活动中并不有用,您需

在Express.js中,是否有方法设置应用程序关闭时要执行的回调函数?

您可以这样使用node.js:

process.on('exit',function()){
//在这里添加关机逻辑。
});
当然,退出函数返回后,主事件循环将停止运行,因此您无法从该函数中安排任何计时器或回调(例如,任何I/O必须是同步的)。

存在:


如果您需要访问当前作用域中的某些内容,您可以像下面的回答那样
bind()
:但是您可能需要绑定
this


express团队推荐以下套餐:


下面的答案在日常活动中并不有用,您需要查找-process.on('SIGINT',()=>{…})或使用箭头函数。它的范围在任何声明的地方
const exitHandler=(options,err)=>{…}
我可以在那里使用
async function()
吗?@HendyIrawan是的,你可以使用
async
@emc这是错误的!不能在“退出”处理程序中使用异步代码。请参见此处:“侦听器函数只能执行同步操作”。到目前为止,我发现处理任何可能原因的退出的最佳选择是处理每个信号事件,如以下回答所述:
process.on('exit', function () {
  console.log('About to exit.');
});
function exitHandler(options, err) {
    if (options.cleanup) console.log('clean');
    if (err) console.log(err.stack);
    if (options.exit) process.exit();
}

process.on('exit', exitHandler.bind(null,{cleanup:true}));