node.js中的emitter.on方法使用说明
方法说明:
为指定事件注册一个监听器。
语法:
emitter.on(event,listener) emitter.addListener(event,listener)
接收参数:
event (string) 事件类型
listener (function) 触发事件时的回调函数
例子:
server.on('connection',function(stream){ console.log('someoneconnected!'); });
源码:
EventEmitter.prototype.addListener=function(type,listener){ varm; if(!util.isFunction(listener)) throwTypeError('listenermustbeafunction'); if(!this._events) this._events={}; //Toavoidrecursioninthecasethattype==="newListener"!Before //addingittothelisteners,firstemit"newListener". if(this._events.newListener) this.emit('newListener',type, util.isFunction(listener.listener)? listener.listener:listener); if(!this._events[type]) //Optimizethecaseofonelistener.Don'tneedtheextraarrayobject. this._events[type]=listener; elseif(util.isObject(this._events[type])) //Ifwe'vealreadygotanarray,justappend. this._events[type].push(listener); else //Addingthesecondelement,needtochangetoarray. this._events[type]=[this._events[type],listener]; //Checkforlistenerleak if(util.isObject(this._events[type])&&!this._events[type].warned){ varm; 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:possibleEventEmittermemory'+ 'leakdetected.%dlistenersadded.'+ 'Useemitter.setMaxListeners()toincreaselimit.', this._events[type].length); console.trace(); } } returnthis; };