0

我编写了以下代码以确保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,终止进程吗?

4

0 回答 0