• 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---吓尿了的大肥鼠
  • 相关阅读:
    好的Qt学习资料
    QT QMap介绍与使用
    Qt缺少调试器
    vs2012+Qt5.3.1环境添加新的ui界面的方法
    QT定时器的使用
    Qt中forward declaration of struct Ui::xxx的解决
    linux-svn命令
    如何编写Windows服务
    为你的爬虫提提速?
    Python爬虫的N种姿势
  • 原文地址:https://www.cnblogs.com/realsoul/p/5581934.html
Copyright © 2020-2023  润新知