node.js中的emitter.on方法使用说明
node.js中的emitter.on方法使用说明
发布时间:2016-12-30 来源:查字典编辑
摘要:方法说明:为指定事件注册一个监听器。语法:复制代码代码如下:emitter.on(event,listener)emitter.addLis...

方法说明:

为指定事件注册一个监听器。

语法:

复制代码 代码如下:

emitter.on(event, listener)

emitter.addListener(event, listener)

接收参数:

event (string) 事件类型

listener (function) 触发事件时的回调函数

例子:

复制代码 代码如下:

server.on('connection', function (stream) {

console.log('someone connected!');

});

源码:

复制代码 代码如下:

EventEmitter.prototype.addListener = function(type, listener) {

var m;

if (!util.isFunction(listener))

throw TypeError('listener must be a function');

if (!this._events)

this._events = {};

// To avoid recursion in the case that type === "newListener"! Before

// adding it to the listeners, first emit "newListener".

if (this._events.newListener)

this.emit('newListener', type,

util.isFunction(listener.listener) ?

listener.listener : listener);

if (!this._events[type])

// Optimize the case of one listener. Don't need the extra array object.

this._events[type] = listener;

else if (util.isObject(this._events[type]))

// If we've already got an array, just append.

this._events[type].push(listener);

else

// Adding the second element, need to change to array.

this._events[type] = [this._events[type], listener];

// Check for listener leak

if (util.isObject(this._events[type]) && !this._events[type].warned) {

var m;

if (!util.isUndefined(this._maxListeners)) {

m = this._maxListeners;

} else {

m = EventEmitter.defaultMaxListeners;

}

if (m && m > 0 && this._events[type].length > m) {

this._events[type].warned = true;

console.error('(node) warning: possible EventEmitter memory ' +

'leak detected. %d listeners added. ' +

'Use emitter.setMaxListeners() to increase limit.',

this._events[type].length);

console.trace();

}

}

return this;

};

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类