zoukankan      html  css  js  c++  java
  • Events

    一、EventEmitter类

      1、描述:EventEmitter是Events模块定义的一个类,所有事件对象都是该类的实例

      2、创建EventEmitter对象

    • 直接创建:
    const EventEmitter = require('events');
    const myEmitter=new EventEmitter()
    • (推荐)继承EventEmitter类,然后创建
    const EventEmitter = require('events');
    class MyEmitter extends EventEmitter{}
    const myEmitter = new MyEmitter();

      3、两种创建方法的区别:

    • 子类继承Object类:class A extends Object {}  //A其实就是构造函数Object的复制,A的实例就是Object的实例
    • EventEmitter构造方法:
    function EventEmitter() {
      EventEmitter.init.call(this);
    }
    //....
    EventEmitter.init = function() {
      this.domain = null;
      if (EventEmitter.usingDomains) {
        // if there is an active domain, then attach to it.
        domain = domain || require('domain');
        if (domain.active && !(this instanceof domain.Domain)) {
          this.domain = domain.active;
        }
      }
    
      if (!this._events || this._events === Object.getPrototypeOf(this)._events) {
        this._events = new EventHandlers();
        this._eventsCount = 0;
      }
    
      this._maxListeners = this._maxListeners || undefined;
    };
    //...

     

    二、EventEmitter对象的方法和属性(emitter表示EventEmitter对象)

      ---参数说明:

    • eventName <string> | <Symbol>   //事件名称
    • listener<function>    //监听事件函数(回调函数)  function([arg1,arg2][,...]){}

      1、添加事件

      (1)emitter.on(evnetName,listener);  //添加事件,可以重复触发

      (2)emitter.once(eventName,listener);  //添加事件,不能重复触发

      (3)emitter.addListener(eventName, listener);  //和emitter.on(eventName,listener);一样  一模一样!!!

        

      2、触发事件

      (1)emitter.emit(eventName[,arg1,arg2][,...]);  //返回true/false;若evnetName已被注册,返回true 否则返回false

      3、移除事件

      (1)emitter.removeListener(eventName, listener);  //移除名为evnetName的事件

      (2)emitter.removeAllListeners([eventName]);  //删除所有指定的事件或者删除所有事件

      4、设置监听事件的最大数目

      (1)EventEmitter.defaultMaxListeners;  //默认为10,一般不要改变该值(会影响所有的实例)

      (2)emitter.setMaxListeners(n);  //设置监听事件的最大数目为n,n可为Infinity (or 0)  (仅仅改变当前实例)

      5、检查监听数目

      (1)emitter.eventNames();  //返回一个包含所有已注册事件的数组,值为String或Symbol

      (2)emitter.getMaxListeners();  //获取最大可监听的事件数目

      6、检查一个同一名称的事件

      (1)emitter.listenerCount(eventName);  //返回名称为evnetName的事件数目

      (2)emitter.listeners(eventName)  //返回一个包含监听器(回调函数)的数组

    All rights reserved please indicate the source if reprint---吓尿了的大肥鼠
  • 相关阅读:
    Atitti 图像处理 图像混合 图像叠加 blend 原理与实现
    Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途
    Atitit 图像处理 灰度图片 灰度化的原理与实现
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    Atitit 实现java的linq 以及与stream api的比较
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
    Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
    Atitit apache 和guava的反射工具
    atitit。企业的价值观 员工第一 vs 客户第一.docx
  • 原文地址:https://www.cnblogs.com/realsoul/p/5581934.html
Copyright © 2011-2022 走看看