Node.js:链过程.exit()调用

如果你可以像这样连接process.on('exit')这样的调用,那将会很整洁

process.on('exit', function firstHandler(err,code,cb){ //this signature is fictitious for this example only if(condition){ cb(null); // this would call the next process.on('exit') listener } }); process.on('exit', function secondHandler(err,code,cb){ //we really exit this time }); 

不知何故,这个function可能吗? 我知道这违背事件发射器/侦听器的工作方式,但我问这个问题的原因是因为我想防止退出,如果有一定的条件,然后重新调用process.exit()一旦满足条件。

它已经这样工作了。 默认情况下,EventEmitters会on()调用on()方法时添加事件侦听器(默认最多为10个侦听器,尽pipe可以更改)。 由于exit事件是作为常规EventEmitter实现的,因此可以通过多次调用on()来添加多个侦听器:

 process.on('exit',function(){console.log('will exit')}); process.on('exit',function(){console.log('really, I will quit')}); process.on('exit',function(){console.log('DEAD')}); 

输出:

 will exit really, I will quit DEAD 

请注意,侦听器将按照它们添加的顺序被调用。 有关更多信息,请参阅事件的文档: https : //nodejs.org/api/events.html

你不能取消退出。 从文档 :

当进程即将退出时发出。 此时无法阻止事件循环的退出,一旦所有“退出”侦听器运行完毕,进程将退出。

一旦发出“退出”事件,就不能阻止node.js进程终止。

但是 ,如果您听“beforeExit”事件,如下所示:

https://nodejs.org/api/process.html

您可以通过添加调用来防止进程/事件循环终止。