源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

node.js中的emitter.emit方法使用说明

  • 时间:2022-11-03 15:46 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:node.js中的emitter.emit方法使用说明
[b]方法说明:[/b] 发射event事件,传递若干可选参数到事件监听器的参数表。 [b]语法:[/b]
[u]复制代码[/u] 代码如下:
emitter.emit(event, [arg1], [arg2], [...])
[b]接收参数:[/b] event                      事件类型 arg1 ~ argN           传递的参数(多个) [b]例子:[/b]
[u]复制代码[/u] 代码如下:
var  events = require('events'); var emitter = new events.EventEmitter();   emitter.on('someEvent', function(arg1, arg2){     console.log('listener1', arg1, arg2); })   emitter.on('someEvent', function(arg1, arg2){     console.log('listener2', arg1, arg2); })   emitter.emit('someEvent', 'byvoid', 1991);
[b]源码:[/b]
[u]复制代码[/u] 代码如下:
EventEmitter.prototype.emit = function(type) {   var er, handler, len, args, i, listeners;   if (!this._events)     this._events = {};   // If there is no 'error' event listener then throw.   if (type === 'error') {     if (!this._events.error ||         (util.isObject(this._events.error) && !this._events.error.length)) {       er = arguments[1];       if (this.domain) {         if (!er) er = new TypeError('Uncaught, unspecified "error" event.');         er.domainEmitter = this;         er.domain = this.domain;         er.domainThrown = false;         this.domain.emit('error', er);       } else if (er instanceof Error) {         throw er; // Unhandled 'error' event       } else {         throw TypeError('Uncaught, unspecified "error" event.');       }       return false;     }   }   handler = this._events[type];   if (util.isUndefined(handler))     return false;   if (this.domain && this !== process)     this.domain.enter();   if (util.isFunction(handler)) {     switch (arguments.length) {       // fast cases       case 1:         handler.call(this);         break;       case 2:         handler.call(this, arguments[1]);         break;       case 3:         handler.call(this, arguments[1], arguments[2]);         break;       // slower       default:         len = arguments.length;         args = new Array(len - 1);         for (i = 1; i < len; i++)           args[i - 1] = arguments[i];         handler.apply(this, args);     }   } else if (util.isObject(handler)) {     len = arguments.length;     args = new Array(len - 1);     for (i = 1; i < len; i++)       args[i - 1] = arguments[i];     listeners = handler.slice();     len = listeners.length;     for (i = 0; i < len; i++)       listeners[i].apply(this, args);   }   if (this.domain && this !== process)     this.domain.exit();   return true; };
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部