nodejs监听

将定义事件添加到js对象

事件使用EventEmitter对象来发出。这个对象包含在events模块中。

var events = require('events');
var emitter = new events.EventEmitter();
emitter.emit("simpleEvent");

emit是一个发射器,当遇见simpleEvent时发射

将事件添加到js对象

function Obj(){
    Events.EventEmitter.call(this);
}
Obj.prototype._proto_ = events.EventEmitter.prototype;

var obj = new Obj();
obj.emit("someEvent");

把事件监听器添加到对象

.addListener(eventName,callback) : 将回调函数附加到对象的监听器中。每当eventName事件被触发时,回调函数被放置在队列中

.on(eventName,callback) : 同 .addListener()

.once(eventName,callback) : 只有eventName事件第一次被触发时,才执行回调

从对象中删除监听器

.listeners(eventName) :返回一个连接到eventName事件的监听器函数的数组

.setMaxListeners(n) : 如果多于n的监听器都加入到EventEmitter对象,就触发警报。他的默认值是10

.removeListener(eventName,callback) : 将callback函数从EventEmitter对象的eventName移除

例子 1

// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();

// 创建事件处理程序
var connectHandler = function connected() {
   console.log('连接成功。');
  
   // 触发 data_received 事件 
   eventEmitter.emit('data_received');
}

// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler);
 
// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
   console.log('数据接收成功。');
});

// 触发 connection 事件 
eventEmitter.emit('connection');

console.log("程序执行完毕。");

例子 2

var events = require('events');
var eventEmitter = new events.EventEmitter();
function Obj(){
    this.num = 0;
    this.getNum = function(){
        eventEmitter.emit("callback");
        console.log("This is obj.getNum");
    }
}
Obj.prototype._proto_ = events.EventEmitter.prototype;

function callback(){
    console.log("This is callback");
}
var obj = new Obj();

eventEmitter.on("callback",callback);

obj.getNum();

nodejs监听
https://zhangfuli.github.io/2016/11/18/nodejs监听/
作者
张富利
发布于
2016年11月18日
许可协议