Javascript 即使被信号处理程序中断,node.js代码也会运行到完成吗?
假设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
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);