【问题标题】:Where are event listeners defined in npm packages?npm 包中定义的事件监听器在哪里?
【发布时间】:2022-01-26 19:13:51
【问题描述】:

我一直致力于在 nodejs 中编写 IRC bot 作为一个学习项目。我经常遇到如下事件监听器:

bot.addListener("message", function(from, to, text, message) {
.
.
.
});

问题:我一直在到处寻找有关此 addListener 的定义/解释位置的解释。我什么也找不到。它来自npm 中的irc 包,即使在搜索irc 包源中的每个github 文件后,我也找不到字符串addListener 的实例。

这里发生了什么?我如何弄清楚这个addListener 是如何工作的,IRC 事件列表是什么(除了“消息”)等等?

【问题讨论】:

    标签: javascript node.js npm dom-events irc


    【解决方案1】:

    看这里http://nodejs.org/docs/latest/api/events.html#events_emitter_addlistener_event_listener

    emitter.addListener(event, listener)

    emitter.on(事件,监听器)

    为指定的监听器数组的末尾添加一个监听器 事件。不检查监听器是否已经 添加。多个调用传递相同的事件组合和 listener 将导致 listener 被多次添加。

    server.on('connection', function (stream) {   console.log('someone
    connected!'); }); Returns emitter, so calls can be chained.
    

    通常用http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor添加到对象

    util.inherits(constructor, superConstructor)# 继承原型 从一个构造函数到另一个构造函数的方法。的原型 构造函数将被设置为从 superConstructor 创建的新对象。

    为方便起见,superConstructor 将是可访问的 通过constructor.super_属性。

    var util = require("util"); var events = require("events");
    
    function MyStream() {
        events.EventEmitter.call(this); }
    
    util.inherits(MyStream, events.EventEmitter);
    
    MyStream.prototype.write = function(data) {
        this.emit("data", data); }
    
    var stream = new MyStream();
    
    console.log(stream instanceof events.EventEmitter); // true console.log(MyStream.super_ === events.EventEmitter); // true
    
    stream.on("data", function(data) {
        console.log('Received data: "' + data + '"'); }) stream.write("It works!"); // Received data: "It works!"
    

    对于您的 irc-bot,您可以在 https://github.com/martynsmith/node-irc/blob/master/lib%2Firc.js 第 603 行找到 thid sting

    util.inherits(Client, process.EventEmitter);
    

    和像

    这样的构造触发的事件
    self.emit('connect'); // same file  L:665
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多