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---吓尿了的大肥鼠
  • 相关阅读:
    童年
    转:如何破解超星打印页数限制
    2016.7.14.2014noip模拟赛D1(网上貌似搜不到
    商店购物
    几道有趣的题
    2016.7.11.第27套测试题(noip2013提D1)
    2016.7.12.第28套测试题(2013noip题D2)
    跨域访问http接口的使用
    心得之——程序的修改和拓展
    不使用<script>导入js文件
  • 原文地址:https://www.cnblogs.com/realsoul/p/5581934.html
Copyright © 2011-2022 走看看