美文网首页
Javascript 事件EventEmitter使用示例

Javascript 事件EventEmitter使用示例

作者: stevenjobs | 来源:发表于2016-09-06 16:23 被阅读688次

    在基于javascript的事件进行开发时,常用到event模块的EventEmitter类。要使自己的模块具有事件的触发和监听功能,比如想通过这种方式使用:

    const Emitter = require('./Emitter');
    const e = new Emitter;
    e.on('hi', function (data) {
        console.log("hi, " + data);
    });
    e.hello();
    

    对于以上代码中的文件模块Emitter.js,可以有三种实现思路:

    方法一

    使用ES6关键字extends继承EventEmitter,这是最简单直观的方法:

    const EventEmitter = require('events');
    class Emitter extends EventEmitter {
        hello() {
            this.emit('hi', 'I am es6');
        }
    }
    module.exports = Emitter;
    

    方法二

    通过util的继承方法继承EventEmitter:

    const EventEmitter = require('events');
    const util = require('util');
    function Emitter() {
        this.hello = function () {
            this.emit('hi', 'I am util');
        }
    }
    util.inherits(Emitter, EventEmitter);
    module.exports = Emitter;
    

    方法三

    直接在EventEmitter对象中添加方法,然后将该对象导出:

    const EventEmitter = require('events');
    
    module.exports = function () {
        let emitter = new EventEmitter;
        emitter.hello = function(){
            emitter.emit('hi', 'I am EventEmitter');
        }
        return emitter;
    }
    

    相关文章

      网友评论

          本文标题:Javascript 事件EventEmitter使用示例

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