当前位置: 首页 > 面试题库 >

Node.js-从EventEmitter继承

宗政子琪
2023-03-14
问题内容

我在许多Node.js库中看到了这种模式

Master.prototype.__proto__ = EventEmitter.prototype;

(在这里获得)

有人可以举个例子给我解释一下,为什么这是一种常见的模式,什么时候方便?


问题答案:

就像该代码上面的注释所言,它将Master继承自EventEmitter.prototype,因此您可以使用该“类”的实例来发出和侦听事件。

例如,您现在可以执行以下操作:

masterInstance = new Master();

masterInstance.on('an_event', function () {
  console.log('an event has happened');
});

// trigger the event
masterInstance.emit('an_event');

更新 :正如许多用户指出的那样,在Node中执行此操作的“标准”方法是使用“ util.inherits”:

var EventEmitter = require('events').EventEmitter;
util.inherits(Master, EventEmitter);

第二次更新 :随着我们对ES6类的关注,建议立即扩展EventEmitter该类:

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

myEmitter.on('event', () => {
  console.log('an event occurred!');
});

myEmitter.emit('event');

请参阅https://nodejs.org/api/events.html#events_events



 类似资料:
  • 主要内容:EventEmitter 类,error 事件,继承 EventEmitterNode.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。 Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.readStream 对象会在文件被打开的时候触发一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。 EventEmitter 类 events 模块只提供了一个

  • Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。 Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。 EventEmitter 类 events 模块只提供了一个对象: e

  • 问题内容: 我正在阅读这篇小文章,以了解从继承的内容,但是我有些困惑。 他这样做: https://gist.github.com/chevex/7646362 为什么他用自己的构造函数手动调用EventEmitter构造函数?另外,他为什么将自己的constrructor的原型设置为的原型?这真让我感到困惑。 然后评论中的某人建议他改为这样做,这似乎更优雅: https://gist.githu

  • 问题内容: 我正在做的事情涉及按顺序运行(进行一些设置,然后运行调用者感兴趣的实际命令),然后进行一些清理)。 就像是: 哪里是这样的: 在内部,我使用,它返回,并且有效地将事件的结果从返回给调用者。 现在,我还需要将事件从stdout和stderr发送到调用者,这些事件也来自EventEmitters。是否有一种方法可以使(Bluebird)Promises正常工作,或者它们只是妨碍发出多个事件

  • 问题内容: 我该如何继承其父代的样式和javascript。 我努力了 但是,它会删除标签。此外,我看不到影响iframe的样式。 我是否有更好/其他的方法来解决这个问题?谢谢。 问题答案: 您可以通过在iframe中使用以下代码来“继承”父级的CSS: 在IE,Chrome和Firefox中对我来说效果很好。 关于JavaScript,我找不到直接将父JavaScript添加到iframe中的方

  • 继承一个可以实现的普通超类有什么不同吗? atm我有一个名为的抽象类,我有/扩展这个。 abstractcar中的一个字段设置为"私有int容量" 但是在子类“小型汽车”中,当我输入“容量”作为构造函数中使用的变量时,它说“容量在抽象汽车中有私有访问” 我想: > 子类继承超类的所有字段和方法? 我现在该怎么进行?