当前位置 主页 > 网站技术 > 代码类 >

    node.JS事件机制与events事件模块的使用方法详解(3)

    栏目:代码类 时间:2020-02-06 15:08

    emitter.listenerCount(eventName)

    eventName <any> 正在被监听的事件名

    返回正在监听名为 eventName 的事件的监听器的数量

    var EventEmitter = require('events');
    var emitter = new EventEmitter();
    emitter.addListener('test',function(){console.log(1);});
    emitter.addListener('test',function(){console.log(1);});
    console.log(emitter.listenerCount('test'));//2

    emitter.listeners(eventName)

    eventName <any>

    返回名为 eventName 的事件的监听器数组的副本

    var EventEmitter = require('events');
    var emitter = new EventEmitter();
    emitter.addListener('test',function(){console.log(1);});
    emitter.addListener('test',function(){console.log(2);});
    console.log(emitter.listeners('test'));//[ [Function], [Function] ]
    emitter.listeners('test')[0]();//1

    emitter.getMaxListeners()

    返回 EventEmitter 当前的最大监听器限制值

    var EventEmitter = require('events');
    var emitter = new EventEmitter();
    console.log(emitter.getMaxListeners());//10

    emitter.setMaxListeners(n)

    默认情况下,如果为特定事件添加了超过 10 个监听器,则 EventEmitter 会打印一个警告。 此限制有助于寻找内存泄露。 但是,并不是所有的事件都要被限为 10 个。 emitter.setMaxListeners() 方法允许修改指定的 EventEmitter 实例的限制。 值设为 Infinity(或 0)表明不限制监听器的数量。返回一个 EventEmitter 引用,可以链式调用

    var EventEmitter = require('events');
    var emitter = new EventEmitter();
    emitter.on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){});
    /*
    Warning: Possible EventEmitter memory leak detected. 11 a listeners added. Use emitter.setMaxListeners() to increase limit
     */
    var EventEmitter = require('events');
    var emitter = new EventEmitter();
    emitter.setMaxListeners(11);
    emitter.on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){});

    EventEmitter.defaultMaxListeners

    每个事件默认可以注册最多10个监听器。单个EventEmitter实例的限制可以使用emitter.setMaxListeners(n)方法改变。所有EventEmitter实例的默认值可以使用EventEmitter.defaultMaxListeners属性改变

    [注意]设置 EventEmitter.defaultMaxListeners 要谨慎,因为会影响所有EventEmitter 实例,包括之前创建的。因而,调用 emitter.setMaxListeners(n) 优先于 EventEmitter.defaultMaxListeners

    var EventEmitter = require('events');
    var emitter = new EventEmitter();
    EventEmitter.defaultMaxListeners = 11;
    emitter.on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){}).on('a',function(){});

    node.JS事件注册与删除