Events_附

一、events.EventEmitter

 
    1、All objects that emit events are instances of the EventEmitter class.
    (来自:https://nodejs.org/dist/latest-v6.x/docs/api/events.html)
 
    2、EventEmitter.on("hangdle",callback); //注册事件
 
    3、EventEmitter.emit("handle"); //触发事件
 
    4、实现继承的方式
 
        var EventEmitter=require("events");
 
        (1)利用util模块的inherits()方法;
 
        function MyEmitter(){EventEmitter.call(this);}
        util.inherits(MtEmitter,EventEmitter);
 
        (2)利用ES6的class和extends关键字实现
 
        class MyEmitter extends EventEmitter {}
 
        (3)通过原型链prototype和__proto__实现
 
        function MyEmitter(){EventEmitter.call(this);}
        MyEmitter.prototype.__proto__=EventEmitter.prototype;
 
    5、示例如下: //依次使用方法A、B、C
 


二、传参和this关键字
 
    1、示例如下: //包含this指针引用内容和参数使用及箭头函数与常规函数的区别
 
 


三、实现异步模型 //待研究
 
    1、setImmediate(callback[,args][,...])
 
        Schedules "immediate" execution of callback after I/O events' callbacks and before timers set               by setTimeOut and setInterval are triggered.
 
    2、proces.nextTick(callback[,args][,...])
 
        It runs before any additional I/O events (including timers) fire in subsequent ticks of the event               loop.
 
    3、I/O相关有待研究...
 
    4、process.nextTick 是将异步回调放到当前帧的末尾、io回调之前,如果nextTick过多,会导致io回调不断            延后,最后callback堆积太多.
 
         setImmediate 是将异步回调放到下一帧,不影响io回调,不会造成callback 堆积.
 
    5、示例如下://注:I/O待研究....
 


 
四、其他Evnet对象方法
 
    1、.addListener(eventName,callback);    //同.on()
 
    2、.once(eventName,callback); //执行一次
 
    3、.listener(eventName); //返回一个连接到eventName事件的监听器函数组
 
    4、setMaxListeners(n); //默认值为10,设置最大监听器数目
 
    5、removeListener(eventName,callback); //将callback函数从EventEmitter对象的eventName事件中删            除
    6、emitter.eventNames(); //返回所有已注册事件的名称
 
All rights reserved please indicate the source if reprint---吓尿了的大肥鼠
原文地址:https://www.cnblogs.com/realsoul/p/5511765.html