1
Я храню слушатель событий внутри WeakMap и после извлечения функции, чтобы удалить его из EventEmitter брошенной Получить ошибки'S:TypeError: слушатель должен быть функцией
TypeError: listener must be a function
Я просто не могу понять, что проблема есть:
var EventEmitter = require('events').EventEmitter;
var listeners = new WeakMap();
var eventEmitterA = new EventEmitter();
var eventEmitterB = new EventEmitter();
eventEmitterA.on('open', (obj) => {
function stuff() { /* ... */ }
listeners.set(obj, stuff);
eventEmitterB.on('stuff', stuff);
});
eventEmitterA.on('close', (obj) => {
var listener = listeners.get(obj);
console.log(typeof listener); // logs "function"
eventEmitterB.removeListener(listener);
});
var someObject = {some: 'object'};
eventEmitterA.emit('open', someObject);
eventEmitterA.emit('close', someObject);
Что такое 'typeof listener' в' eventEmitterA.on ('close', ...) '? У вас есть 'console.log()', если typeof является функцией, но что там на самом деле? – jfriend00
console.log (typeof прослушиватель) дает «функцию» – timw
некоторые [docs] (https://nodejs.org/api/events.html#events_emitter_removelistener_event_listener) могут быть полезны – Hacketo