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
您可以通过添加调用来防止进程/事件循环终止。