Есть ли способ получить все события процесса в NodeJS? - PullRequest
0 голосов
/ 26 февраля 2019

Например, вместо прослушивания конкретной ошибки, подобной приведенной ниже:

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

1 Ответ

0 голосов
/ 26 февраля 2019

В документации процесс - это класс, который расширяет "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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...