精选文章 发布订阅原理

发布订阅原理

作者:杯影含珊 时间: 2019-11-11 10:03:34
杯影含珊 2019-11-11 10:03:34
function EventEmitter(){
    this._event = Object.create(null);
}
EventEmitter.prototype.on=function(eventname,callback){
    if(!this._event) this._event = Object.create(null);
    if(eventname!=="newListener"){
        let listeners = this._event["newListener"];
        if(listeners){
            this.emit("newListener",eventname)
        }
    }
    let stack = this._event[eventname] || [];
    stack.push(callback);
    this._event[eventname] = stack;
}
EventEmitter.prototype.once = function(eventname,callback){
    const one = (...args)=>{
        callback(...args);
        this.off(eventname,one)
    }
    one.l = callback;
    this.on(eventname,one)
}
EventEmitter.prototype.off = function(eventname,callback){
    if(this._event[eventname]){
        this._event[eventname] =      this._event[eventname].filter(item=>item!==callback&&item.l!==callback);
    }
}
EventEmitter.prototype.emit=function(eventname,...args){
    if(this._event[eventname]){
        this._event[eventname].forEach(fn=>{
            fn(...args)
        })
    }
}
module.exports = EventEmitter;

 

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:JSONObject

下一篇:栈与栈的应用

您可能感兴趣

  • 物联网大数据平台有哪些功能特点

      大数据技术是指从各种各样海量类型的数据中,快速获得有价值信息的能力。适用于大数据的技术,包括大规模并行处理(MPP)数据库,数据挖掘电网,分布式文件系统,分布式数据库,云计算平台,互联网,和可扩展的存储系统。   一个物联网大数据平台需要具备哪些功能?与通用的大数据平台相比,它需要具备什么样的特征呢?我们来仔细分析一下。   1.高效分布式   必须是高效的分布式系统。物联网产生的数据量...

  • 历时两周,将我司的Hadoop2升级到Hadoop3,踩了几个大坑...

    文末有赠书福利 继一次超万亿规模的Hadoop NameNode性能故障排查过程之后,虽然解决了Hadoop2.6.0版本在项目中的问题,但客户依然比较担心,一是担心版本过老,还存在其他未发现的问题;二是按目前每天近千亿条的数据增长,终究会遇到NameNode的第二次瓶颈。 基于上述原因,我们决定将当前集群由Hadoop2.6.0版本升级到Hadoop3.2.1版本,且启用联邦模式。历时2周...

  • 论文|从DSSM语义匹配到Google的双塔深度模型召回和广告场景中的双塔模型思考...

    点击标题下「搜索与推荐Wiki」可快速关注 ▼ 相关推荐 ▼ 1、基于DNN的推荐算法介绍 2、传统机器学习和前沿深度学习推荐模型演化关系 3、论文|AGREE-基于注意力机制的群组推荐(附代码) 4、论文|被“玩烂”了的协同过滤加上神经网络怎么搞? 本文包含(文章较长,建议先收藏再阅读,点击文末的阅读原文,查看更多推荐相关文章): DSSM DSSM的变种 MV-DNN Google Tw...

  • 芯片破壁者(十.上):风起樱花之地

    在不断升级的中美科技战中,每个人都很容易发现,在芯片上受制于人似乎是一个最难解的谜题。面对这种情况,很多国人可能都在思考:我们到底有没有可能打破“芯片枷锁”? 而从历史里寻找答案是文明的天性,在审视国家间的半导体博弈时,有一个无法绕开的话题,就是上世纪60年到到90年代,横跨数十年、关系错综复杂的美日半导体纠葛。这段历史中最为人津津乐道的有两点。一是日本在80年代一跃超过美国成为全球半导体产...

  • 一线互联网大厂精选9道Java集合面试题

    作者|码农田小齐|微信公众号 今天这篇文章是单纯的从面试的角度出发,以回答面试题为线索,再把整个 Java 集合框架复习一遍,希望能帮助大家拿下面试。 先上图: 当面试官问问题时,我会先把问题归类,锁定这个知识点在我的知识体系中的位置,然后延展开来想这一块有哪些重点内容,面试官问这个是想考察什么、接下来还想问什么。 这样自己的思路不会混乱,还能预测面试官下一个问题,或者,也可以引导面试官问出...

  • RabbitMQ(一):RabbitMQ简介

    RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括RabbitMQ是什么、RabbitMQ核心概念、常用交换器类型等。 RabbitMQ简介 消息队列提供一个异步通信机制,消息的发送者不必一直等待到消息被成功处理才返回,而是立即返回。消息中间件负责处...

  • 对云桌面、桌面云、私有云的一些看法

    最近整理了一下自2017年以来自己对私有云服务平台构建的一些认识,并以刚刚为某后勤保障部队单位提供的小规模私有云服务平台为例阐述。 私有云平台、云计算服务与虚拟化: 我个人认为这三个名称分别指涉了三个不同的事物: 私有云平台:在实践中,私有云平台时包含了服务端软硬件集成和客户端软硬件集成的一整套特定业务需求场景的、已经处于落地实施阶段的解决方案项目。 比如某后勤保障部队为简化征兵流程、节省相...

  • 武田宣布2020财年第一季度业绩;确认管理层指引,并提高全年列报运营利润和列报净利润

    日本大阪--(美国商业资讯)--武田药品工业株式会社(Takeda Pharmaceutical Company Limited, TOKYO:4502/NYSE:TAK)(简称“武田”)今天宣布了2020财年第一季度(截至2020年6月30日)的财务业绩。基于第一季度的业绩,该公司确认了管理层指引,并提高了全年的列报运营利润和列报净利润。该公司还宣布了其研发产品线的最新消息,强调了其研发动...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。