Javascript 即使被信号处理程序中断,node.js代码也会运行到完成吗?

Javascript 即使被信号处理程序中断,node.js代码也会运行到完成吗?,javascript,node.js,Javascript,Node.js,假设node.js中有以下代码: process.on('SIGTERM', function () { process.exit(0); }); for (var i = 0; i < 100; i++) { console.error(i); } process.on('SIGTERM',function(){ 进程退出(0); }); 对于(变量i=0;i

假设node.js中有以下代码:

process.on('SIGTERM', function () {
    process.exit(0);
});

for (var i = 0; i < 100; i++) {
   console.error(i);
}
process.on('SIGTERM',function(){
进程退出(0);
});
对于(变量i=0;i<100;i++){
控制台错误(i);
}

代码是否总是打印100以内的所有数字?

这很容易测试:

process.on('SIGTERM', function () {
  console.log('*** GOT SIGTERM ***');
  process.exit(0);
});

process.kill(process.pid);

for (var i = 0; i < 100; i++) {
 console.error(i);
}
这里我们使用
setTimeout
等待1秒,然后再执行
for
循环。节点的事件循环将在这段时间内继续运行,因此
进程.on('SIGTERM')
将在
for
循环开始之前调用。结果不同:for循环根本不运行

一旦调用了
process.exit(0)
,应用程序将结束,并且不会执行任何其他操作。这两个示例之间的区别在于调用
process.exit(0)

process.on('SIGTERM', function () {
  console.log('*** GOT SIGTERM ***');
  process.exit(0);
});

process.kill(process.pid);

setTimeout(function() {
  for (var i = 0; i < 100; i++) {
   console.error(i);
  }
}, 1000);