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

方法说明:

发射event事件,传递若干可选参数到事件监听器的参数表。

语法:

复制代码 代码如下:

emitter.emit(event, [arg1], [arg2], [...])

接收参数:

event                      事件类型

arg1 ~ argN           传递的参数(多个)

例子:

复制代码 代码如下:

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);

源码:

复制代码 代码如下:

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;
};

时间: 2024-11-05 14:55:22

node.js中的emitter.emit方法使用说明_node.js的相关文章

node.js中的console.trace方法使用说明_node.js

方法说明: 向标准错误流输出当前的调用栈. 语法: 复制代码 代码如下: console.trace(label) 接收参数: label 例子: 复制代码 代码如下: console.trace();   //运行结果: Trace:      at Object.<anonymous> (/home/byvoid/consoletrace.js : 1: 71)      at Module._compile (module.js:441:26)      at Object..js (m

node.js中的http.get方法使用说明_node.js

方法说明: 由于大多数请求是不包含请求体的 GET请求.Node.js为请求提供了更加简便的方法. 该方法和 Http.request()的不同在于,该方法只以 GET 方式请求,并且会自动调用 req.end()来结束请求. 语法: 复制代码 代码如下: http.get(options, callback) 由于该方法属于http模块,使用前需要引入http模块(var http= require("http") ) 接收参数: option      表示请求网站的域名或IP地址

node.js中的path.resolve方法使用说明_node.js

方法说明: 将参数 to 位置的字符解析到一个绝对路径里. 语法: 复制代码 代码如下: path.resolve([from ...], to) 由于该方法属于path模块,使用前需要引入path模块(var path= require("path") ) 接收参数: from                     源路径 to                         将被解析到绝对路径的字符串 例子: 复制代码 代码如下: path.resolve('/foo/bar',

node.js中的buffer.copy方法使用说明_node.js

方法说明: 进行不同buffer之间的复制替换操作. 从源buffer复制数据 并替换到目标buffer的指定位置. 语法: 复制代码 代码如下: buffer.copy(targetBuffer, [targetStart], [sourceStart], [sourceEnd]) 接收参数: targetBuffer        目标buffer,执行复制替换的buffer targetStart           目标buffer数据替换的起始位置 sourceStart       

node.js中的buffer.fill方法使用说明_node.js

方法说明: 将制定数据填充到buffer中. 语法: 复制代码 代码如下: buffer.fill(value, [offset], [end]) 接收参数: value           将要填充的数据 offet           填充数据的开始位置,不指定默认为 0 end            填充数据的结束位置,不指定默认为 buffer 的 长度. 例子: 复制代码 代码如下: //例子1中,不指定填充内容的起止位置 var b = new Buffer(50); b.fill(

node.js中的buffer.slice方法使用说明_node.js

方法说明: 返回一个新的buffer对象,这个新buffer和老buffer公用一个内存. 但是被start和end索引偏移缩减了.(比如,一个buffer里有1到10个字节,我们只想要4-8个字节,就可以用这个函数buf.slice(4,8),因为他们共用一个内存,所以不会消耗内存,) 因为共用内存,所以修改新的buffer后,老buffer的内容同样也会被修改. 语法: 复制代码 代码如下: buffer.slice([start], [end]) 接收参数: start      开始位置

node.js中的fs.lstat方法使用说明_node.js

方法说明: 获取文件信息(不解析符号链接). 语法: 复制代码 代码如下: fs.lstat(path, [callback(err, stats)]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: path   文件路径 callback  回调,传递两个参数,异常参数err, 文件信息数组 stats stats包含以下信息:(以下信息为案例中读取的文件信息,非默认值) 复制代码 代码如下: {    dev : 0 ,

node.js中的fs.fstat方法使用说明_node.js

方法说明: 根据文件描述符获取文件信息. 语法: 复制代码 代码如下: fs.fstat(fd, [callback(err, stats)]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: fd                 文件描述符 callback       回调,传递2个参数,异常参数err 和 文件信息参数 stats stats包含以下信息:(以下信息为案例中读取的文件信息,非默认值) 复制代码 代码如下:

node.js中的fs.write方法使用说明_node.js

方法说明: 写入文件(根据文件描述符),功能与 fs.writeFile() 类似,但该方法提供更底层的操作,实际应用中建议使用多 fs.writeFile()  . 该方法有两种形式: 1.fs.write(fd, buffer, offset, length[, position], [callback(err, bytesWritten, buffer)]) 这种写法将buffer写入文件(根据文件描述符fd来查找文件). 2.fs.write(fd, data[, position[,