В Node.js у нас есть стандартный эмиттер событий:
const EE = require('events');
const ee = new EE();
ee.on('x', function(){
});
то, что я хотел бы сделать, это слушать, когда клиент регистрирует слушателя. Цель состоит в том, что если эмитент находится в определенном состоянии, он предпримет действия при регистрации.
Чтобы было ясно, когда вызывается ee.on()
, для определенного события «x», я хочу предпринять некоторые действия.
Как я могу сделать это без исправления всех эмиттеров событий в Node.js?
Если я сделаю следующее, исправляю ли я метод прототипа или метод экземпляра?
let on = ee.on;
ee.on = function(){
if(ee.y === true){
process.next(function(){
ee.emit('done');
});
}
return on.apply(ee, arguments);
};
это, конечно, то же самое, что и:
let on = ee.on;
ee.on = function(){
if(this.y === true){
process.next(() => {
this.emit('done');
});
}
return on.apply(this, arguments);
};
Я думаю, что это сработает, но я не уверен. Я думаю, что это повлияет только на этот конкретный эмиттер событий, а не на все эмиттеры событий, потому что это не изменит прототип...