对于下面的token.remove()
调用,您是否知道为什么Facebook emitter不起作用:
控制台:
$ node main.js
5 10
/Users/carlf/Documents/dev/test/emitter/emit-node.js:21
token.remove();
^
TypeError: undefined is not a function
我的代码:
var {EventEmitter} = require('./node_modules/emitter');
var emitter = new EventEmitter();
var token = emitter.addListener('event', function(x, y) { console.log(x, y); });
emitter.emit('event', 5, 10); // Listener prints "5 10".
token.remove();
emitter.emit('event', 9, 11); // nothing is logged
发布于 2016-04-22 09:49:27
这个错误告诉你,删除不是一个函数。要删除侦听器,您需要调用该EventEmitter
实例的removeListener
方法,传递事件的名称和您提供的回调。试试这个:
var {EventEmitter} = require('./node_modules/emitter');
var emitter = new EventEmitter();
function handler(x, y) {
console.log(x,y);
}
emitter.addListener('event', handler);
emitter.emit('event', 5, 10); // Listener prints "5 10".
emitter.removeListener('event', handler);
emitter.emit('event', 9, 11); // nothing is logged
发布于 2016-04-23 11:21:12
我的错误是我输入了npm install emitter
,应该是npm install fbemitter'. What threw me was there were no error messages that made this obvious, looks like the core API calls are same in both packages. At least for
addListener()and
emit()`.
一旦我检查了`package.json的版本号和github URL,我很快就明白了这一点。
https://stackoverflow.com/questions/36783320
复制相似问题