在ES6类中使用EventEmitter

Ala*_*ska 19 javascript inheritance node.js eventemitter ecmascript-6

我试图让我自己的类中的EventEmitter在ES6中运行:

"use strict";
const EventEmitter = require('events');

class Client extends EventEmitter{

    constructor(token, client_id, client_secret, redirect_uri, code){
        super();
        this.token = token;
        this.client_id = client_id;
        this.client_secret = client_secret;
        this.redirect_uri = redirect_uri;
        this.code = code;
    }

    eventTest(){
        this.emit("event");
        console.log(this.token);
    }
}

let testClient = new Client(1,2,3,4,5);

testClient.eventTest();
testClient.on('event', () => {console.log('triggerd!')} );
Run Code Online (Sandbox Code Playgroud)

但事件无所作为^^

没有ES6,我得到了它使用此代码:

var util = require('util');
var EventEmitter = require('events').EventEmitter;

var Client = function(credentials) {
    var self = this;

    function eventTest() {
        self.emit('event');
    }
};

util.inherits(Client, EventEmitter);
Run Code Online (Sandbox Code Playgroud)

有人知道如何在ES6中做到这一点吗?

Ber*_*rgi 23

事件是同步的 - 你在听之前就开始了它.使用

const testClient = new Client(1,2,3,4,5);
testClient.on('event', () => {console.log('triggered!')} );
testClient.eventTest();
Run Code Online (Sandbox Code Playgroud)

  • @Alaska 事件的发生通常是不确定的,因此是异步的,除非您的代码本身发出它们。所以我不会称之为愚蠢的错误:D (2认同)