我编写了以下代码以确保pg-db
在进程退出时关闭我的池。
['exit', 'SIGINT', 'SIGUSR1', 'SIGUSR2', 'uncaughtException', 'SIGTERM'].forEach(ev => {
process.on(ev, cleanUp.bind(null, ev));
});
其中cleanUp
定义如下:
let didEnd = false
function cleanUp(options, exCode) {
try {
if (!didEnd) {
didEnd = true
console.log('closing pool')
pool.end(() => {}))
}
} catch(ex) {
process.exit(1)
}
我注意到,当这段代码执行时,closing pool
字符串被记录下来,并且当这段代码执行时,进程似乎挂起并且没有正常终止。一旦方法运行,信号不应该exit
继续执行cleanUp
,终止进程吗?