例如,而不是听下面的特定错误:
process.on('unhandledRejection', r => {
console.error('tracing unhandledRejection: ');
console.error(r.response);
});
我想获取所有流程事件,并仅通过配置过滤掉我想要的事件。 我正在调查的目标行为:
process.on('events', event => {
if (event is 'unhandledRejection') {
doSomething();
}
else if(event is 'uncaughtException') {
doSomethingElse();
}
else {
ignore();
}
});
参考:https://nodejs.org/api/process.html#process_event_unhandledrejection
答案 0 :(得分:0)
在文档中,process是扩展“ EventEmitter”的类。看来您无法列出或访问所有“过程”事件。
基本上,EventEmitter类具有.listeners()方法,该方法列出了所有打开的侦听器,但是如果您希望在.listeners()方法上添加侦听器,则需要先添加侦听器。
如果您真的想使用“自定义”和“丑陋”的方法来执行此操作,则可以执行以下操作:
const events = ["beforeExit", "rejectionHandled", "uncaughtException", "exit"]; // list all the process events here...
events.forEach((eventName) => {
console.log('listening on ', eventName);
process.on(eventName, (...args) => {
console.log('event ' + eventName + ' was called with args : ' + args.join(','));
});
});
// quit process with exit code for example
process.exit(5);
// will be print :
// listening on beforeExit
// listening on rejectionHandled
// listening on uncaughtException
// listening on exit
// event exit was called with args : 5