在ES6类中使用EventEmitter
我正在尝试在ES6中运行我自己的类中的EventEmitter:
"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!')} );
但事件没有做什么^^
没有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);
有人知道如何正确使用ES6吗?
事件是同步的 – 你在听之前就开始了。 使用
const testClient = new Client(1,2,3,4,5); testClient.on('event', () => {console.log('triggered!')} ); testClient.eventTest();
你可以使用process.nextTick()
来让你的代码asynchronous。 之后一切都会按预期工作。 这是来自节点文档的注释:
process.nextTick()
方法将callback添加到“下一个打勾队列”中。 一旦事件循环的当前轮到运行完成,当前在下一个滴答队列中的所有callback将被调用。
eventTest(){ process.nextTick(() => { this.emit("event"); }); console.log(this.token); }
- Object.create和inheritance
- 在这种情况下实现JavaScript的inheritance
- 在node.js绑定中实现inheritance
- 为什么nodejs不能inheritance浏览器js
- inheritance函数如何在Node.js中工作?
- Object.create(BaseObject)和util.inherits(MyObject,BaseObject)有什么区别?
- 为什么console.log()不显示Object.create的inheritance属性?
- Node.js模块的inheritance
- 问题获取Node.js Express 3.x模板inheritance与Swig通过consolidate.js