gpt4 book ai didi

javascript - process.exit Hook 无限循环?

转载 作者:行者123 更新时间:2023-11-29 21:38:36 25 4
gpt4 key购买 nike

这是用于退出 Node.js 进程的 native 退出 Hook :

process.on('exit', function () { // listen to exit event

});

这个钩子(Hook)会通过调用直接调用

process.exit();  // probably does some magic to remove calls from queue somehow, somewhere in the Node.js process

但是,我在网上看到一些代码建议这样做:

process.on('exit', function () {
if (condition) {
process.exit(1); // will this invoke the same exit event?
} else {
process.exit(0); // will this invoke the same exit event?
}
});

我的问题是, Hook 内的 process.exit 调用是否会导致无限调用堆栈出现任何问题?

最佳答案

process.exit 有一个名为 process._exiting 的标志。因此,如果设置了标志,则不会再发出 processexit 事件。

这就是process.exit看起来,从 Node.js v5.1.0 开始,

process.exit = function(code) {
if (code || code === 0)
process.exitCode = code;

if (!process._exiting) {
process._exiting = true;
process.emit('exit', process.exitCode || 0);
}
process.reallyExit(process.exitCode || 0);
};

如果你喜欢乱来,那就试试这个

var counter = 0;

process.on('exit', function (val) {
console.log("Counter", counter++);
if (counter === 2) {
console.log("Really exiting now");
// change this to `false` if you want to see infinite loop :D
process._exiting = true;
} else {
process._exiting = false;
}
process.exit(0);
});

关于javascript - process.exit Hook 无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34011725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com