node.js里的event模块

作者: 放飞吧自我 | 来源:发表于2018-01-24 21:18 被阅读7次

    在Node.js中,很多对象都会发出事件。比如,fs.readStream打开文件时会发出一个事件。所有发出事件的对象都是events.EventEmitter的实例,可以通过require("events");获得event模块。
    通常,事件名采用“驼峰式”命名方式,但是,并没有严格规定。这只是推荐的命名方法。
    函数可以添加给对象,对象发出事件时,对应函数就会被执行。这些函数被称作监听器(listeners)。在监听器函数中,this引用的是它(指此监听器函数)添加到的EventEmitter对象。

    添加监听器

    为事件绑定事件处理程序,可以使用addListener(event, listener)和on(event, listener),它们的作用是完全一样的。传入的参数是事件(event)和处理函数(listener)。

    //事件触发模块
    var events=require("events");
    var util = require("util");
    //定义对象
    function Dad() {
    
    }
    //实现原型的继承
    util.inherits(Dad,events);
    var newDad = new Dad();
    function test() {
        console.log("我是test方法");
    }
    function myfn() {
        console.log("我是myfn方法");
    }
    

    addListener 方法

    newDad.addListener("lee",test);
    newDad.addListener("lee",myfn);
    

    on 方法

    newDad.on("lee",test);// ------on:jq方法,可监控
    newDad.on("lee",myfn);
    

    设置监听器最大绑定数
    emitter.setMaxListeners(n)可以设置同一事件的监听器最大绑定数,默认情况下,超过10个就会警告提示,这能帮我们快速找到类存泄露的地方。显然,不是所有的事件触发器都限制在10个监听器,通过这个方法可以设置,如果设置为0就是无限制。

    newDad.setMaxListeners(2); //-------只能绑定两个
    

    once(event, listener)绑定的事件监听器只会执行一次,然后就会被删除掉。

    newDad.once("onceEmit",test);
    

    解除单个事件绑定

    //removeAllListeners("事件名称",事件) 移除指定事件名称的对应事件
    //removeAllListeners("事件名称") 移除指定事件名称的所有事件
    //removeAllListeners() 移除所有绑定事件
     newDad.removeListener("lee",test) 
    

    触发事件 emit

    newDad.emit("lee");
    

    相关文章

      网友评论

        本文标题:node.js里的event模块

        本文链接:https://www.haomeiwen.com/subject/rnqpaxtx.html