NodeJS的newListener与removeListener

NodeJS的newListener与removeListener

event.on(“newListener”, function (EventName, callback) {
callback({EventName: EventName});
});
event.addListener(“aaa”, function (value) {
console.log(“我是注册时事件自动触发的” + value.EventName + “事件!”);
});// 正常输出:我是注册事件时自动触发的aaa事件!</p>
<p>event.on(“removeListener”, function (EventName, callback) {
callback({EventName: EventName});
});
var callbackName = function (value) {
console.log(“我是删除事件时自动触发的” + value.EventName + “事件!”);
}
event.on(“ddd”, callbackName);
event.removeListener(“ddd”, callbackName);
// 报错!event.js:76 callback({EventName: EventName});


3 回复

好像问题在于:

event.on("removeListener", function (EventName, callback) {});

这行代码触发了下列代码:

event.on("newListener", function (EventName, callback) {
	callback({EventName: EventName});
});

NodeJS 的 newListenerremoveListener

在 Node.js 中,newListenerremoveListener 事件可以用来处理动态添加或移除监听器的情况。这些事件允许你在监听器被添加或移除时执行特定的操作。

newListener 事件

newListener 事件在监听器被添加到事件发射器时触发。你可以通过监听这个事件来执行一些自定义逻辑,比如记录日志或者验证监听器的合法性。

const EventEmitter = require('events');

const eventEmitter = new EventEmitter();

eventEmitter.on('newListener', function(eventName, listener) {
    console.log(`新监听器已添加到事件 ${eventName}`);
    console.log(`监听器函数为:`, listener.toString());
});

eventEmitter.on('aaa', function(value) {
    console.log('我是注册时事件自动触发的' + value + '事件!');
});

// 输出:
// 新监听器已添加到事件 aaa
// 监听器函数为: function anonymous(value) {
//     console.log('我是注册时事件自动触发的' + value + '事件!');
// }

removeListener 事件

removeListener 事件在监听器被移除时触发。同样地,你可以通过监听这个事件来执行一些清理操作或其他逻辑。

const EventEmitter = require('events');

const eventEmitter = new EventEmitter();

eventEmitter.on('removeListener', function(eventName, listener) {
    console.log(`监听器已从事件 ${eventName} 中移除`);
    console.log(`被移除的监听器函数为:`, listener.toString());
});

function callbackName(value) {
    console.log('我是删除事件时自动触发的' + value + '事件!');
}

eventEmitter.on('ddd', callbackName);

eventEmitter.removeListener('ddd', callbackName);

// 输出:
// 监听器已从事件 ddd 中移除
// 被移除的监听器函数为: function callbackName(value) {
//     console.log('我是删除事件时自动触发的' + value + '事件!');
// }

总结

  • newListener 事件在监听器被添加到事件发射器时触发。
  • removeListener 事件在监听器被移除时触发。
  • 这些事件可以用于记录、验证或清理操作。

注意:上述示例中的 event 实例应该是 eventEmitter,以符合 Node.js 的标准命名约定。

newListenerremoveListener 是 Node.js 中用于处理事件监听器添加和移除的事件。这两个事件可以帮助你在添加或移除监听器时执行额外的操作。

newListener 事件

newListener 事件会在一个新的监听器被添加到事件Emitter上时触发。这可以让你在监听器实际被调用之前进行一些自定义操作。

示例代码

const EventEmitter = require('events');

const eventEmitter = new EventEmitter();

// 监听 'newListener' 事件
eventEmitter.on('newListener', (eventName, listener) => {
    console.log(`新监听器已添加到事件 ${eventName}`);
});

// 添加一个监听器
eventEmitter.on('aaa', (value) => {
    console.log(`我是注册时事件自动触发的${value}事件!`);
});

// 输出:
// 新监听器已添加到事件 aaa

removeListener 事件

removeListener 事件会在一个监听器被从事件Emitter上移除时触发。这可以让你在监听器实际被移除之前进行一些自定义操作。

示例代码

const EventEmitter = require('events');

const eventEmitter = new EventEmitter();

// 定义一个监听器
const callbackName = function (value) {
    console.log(`我是删除事件时自动触发的${value}事件!`);
};

// 添加一个监听器
eventEmitter.on('ddd', callbackName);

// 监听 'removeListener' 事件
eventEmitter.on('removeListener', (eventName, listener) => {
    console.log(`监听器已从事件 ${eventName} 上移除`);
});

// 移除监听器
eventEmitter.removeListener('ddd', callbackName);

// 输出:
// 监听器已从事件 ddd 上移除

注意事项

  • newListenerremoveListener 事件不会自动触发 listener 函数。
  • 在使用 newListenerremoveListener 时要注意避免无限循环。

以上就是关于 newListenerremoveListener 的解释和示例代码。

回到顶部