TypeError: listener must be a function
TypeError: listener must be a function
我在 WeakMap 中存储了一个事件侦听器,并在检索函数以将其从 EventEmitter 中删除时抛出此错误:
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);
eventEmitterB.removeListener(listener);
应该是
eventEmitterB.removeListener('stuff', listener);
removeListener
有两个参数,函数应该是第二个参数,所以你将函数作为处理程序的名称传递,undefined
作为处理程序传递。
我在 WeakMap 中存储了一个事件侦听器,并在检索函数以将其从 EventEmitter 中删除时抛出此错误:
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);
eventEmitterB.removeListener(listener);
应该是
eventEmitterB.removeListener('stuff', listener);
removeListener
有两个参数,函数应该是第二个参数,所以你将函数作为处理程序的名称传递,undefined
作为处理程序传递。