Я создал класс генератора событий.Работает нормально.Позвольте мне рассказать вам, как:
Это класс:
class EventEmitter{
constructor() {
this.events = {};
}
on(eventName,callback) {
if(this.events[eventName]) {
this.events[eventName].push(callback);
} else {
this.events[eventName] = [callback];
}
}
trigger(eventName, ...rest) {
if(this.events[eventName]) {
this.events[eventName].forEach(cb => {
cb.apply(null,rest);
});
}
}
}
С этим классом я могу слушать определенные события.Вот так:
const ee = new EventEmitter();
ee.on('change', (aa) => {
console.log(aa);
});
Тогда я могу запустить его с помощью метода триггера
ee.trigger('change','Argument');
Теперь я хочу прослушать события с определенными условиями.
например:
ee.on({'change': 'barack the boss'}, (aa) => {
console.log(aa);
});
Приведенный выше фрагмент кода должен выполняться только тогда, когда триггер выглядит следующим образом:
//wont run
ee.trigger('change','barack is no boss');
//will run
ee.trigger('change','barack the boss');
Интересно, как это сделать.Я не прошу вас писать мой код, мне нужен пример или шаг в правильном направлении.
Заранее спасибо.
Весь код:
class EventEmitter{
constructor() {
this.events = {};
}
on(eventName,callback) {
if(this.events[eventName]) {
this.events[eventName].push(callback);
} else {
this.events[eventName] = [callback];
}
}
trigger(eventName, ...rest) {
if(this.events[eventName]) {
this.events[eventName].forEach(cb => {
cb.apply(null,rest);
});
}
}
}
//events has been created and is currently an empty object
const ee = new EventEmitter();
//even has been created, this event has a function which will be executed when event is triggered
ee.on({'change': 'barack the boss'}, (aa) => {
console.log(aa);
});
//wont run
ee.trigger('change','barack is no boss');
//will run
ee.trigger('change','barack the boss');