节点removeListener不起作用 [英] node removeListener does not work

查看:98
本文介绍了节点removeListener不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试使用以下代码删除侦听器:

trying to remove listener with this code:

var EventEmitter = require('events').EventEmitter;

var emitter = new EventEmitter;

emitter.on('message', function(text)
{
        console.log(text);
});

setInterval(function()
{
        emitter.emit('message', Date.now());
}, 300);

setTimeout(function()
{
        emitter.removeListener('message', function()
        {
                console.log('removing "message" listener');
        });
}, 1000);

它不会中断间隔,我的节点版本:v0.8.11

It doesn't break the interval, my node version: v0.8.11

阅读文档我认为还可以: http://nodejs.org/api/events.html#events_emitter_removelistener_event_listener

reading documentation i think it's ok: http://nodejs.org/api/events.html#events_emitter_removelistener_event_listener

推荐答案

您需要将相同的函数传递给removeListener,因此在这种情况下,您不能使用匿名函数.

You need to pass the same function to removeListener, so in this case you can not use an anonymous function.

这是一个有效的版本:

var EventEmitter = require('events').EventEmitter;

var emitter = new EventEmitter;

function listener(text) {
  console.log(text);
}

emitter.on('message', listener);

setInterval(function() {
  emitter.emit('message', Date.now());
}, 300);

setTimeout(function() {
  console.log("removing");
  emitter.removeListener('message', listener);
}, 1000);

这篇关于节点removeListener不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆