javascript - EventEmitter 是否只是将函数映射到对象中?

标签 javascript node.js events eventemitter

例如

var event = {
    message: function(message){console.log(message);}
}

//polling here
{
    if(response.type == "message")
    {
        event[response.type](response.message);
    }
}

应该类似于

events.on("message", function(message){console.log(message);});

//polling here
{
    events.emit(response.type, response.message);
}

如果不是,除了.once等辅助函数之外,它与EventEmitter有何不同?

出于不同的原因,我同时使用两者。 EventEmitter 用于事件驱动的函数,而 event 对象用于保持一组有组织的函数从单个上下文(event)触发。

编辑:

修改代码以使用多个函数/监听器。

var event = {
    message: []
}

event.message.push(function(message){console.log(message)});

//polling here
{
    if(response.type == "message")
    {
        for(var func in event[response.type])
        {
            event[response.type][func](response.message);
        }

    }
}

最佳答案

嗯,从更广泛的 Angular 来看,它确实是一个对象(EvenEmitter 类),它公开了一组方法来将监听器函数注册到事件,并删除这些监听器函数,以及其他各种会改变其内部封闭事件对象的函数。

此外,所有触发事件的核心模块都继承自 EventEmitter 类,从而获得对中央事件对象的访问权限。 因此,是的,它确实将函数映射到对象。

关于javascript - EventEmitter 是否只是将函数映射到对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449589/

相关文章:

node.js - socket.io 多人游戏玩家的看法

javascript - node.js 请求库的相对 uri

c# - 我可以拥有强大的异常安全和事件吗?

来自另一个表的日期的 MySQL 事件时间表

javascript - 在 QML 中使用对话框

javascript - cordova-dialogs-plugin 中的数字输入

javascript - 在knockout.js中,是否可以使用动态绑定(bind)值?

javascript - 如何使jQuery每个循环重复无限次

javascript - 如果 "sync"-function 在 promise 中运行,它是否也同步?

angular - AnyChart 8.1 与 Angular rowclick 事件不返回项目或期间信息