`
timelessmemory
  • 浏览: 4642 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

js 发布订阅

    博客分类:
  • js
阅读更多
var Event = (function() {
    var clientList = {};
    var listen,
        trigger,
        remove;
    listen = function(key, fn) {
        if (!clientList[key]) {
            clientList[key] = [];
        }
        clientList[key].push(fn);
    };

    trigger = function() {
        var key = [].shift.call(arguments);
        var fns = clientList[key];

        if (!fns || fns.length === 0) {
            return false;
        }

        for (var i = 0, fn; fn = fns[i++];) {
            fn.apply(this, arguments);
        }
    };


    remove = function(key, fn) {
        var fns = clientList[key];

        // key对应的消息么有被人订阅
        if (!fns) {
            return false;
        }

        // 没有传入fn(具体的回调函数), 表示取消key对应的所有订阅
        if (!fn) {
            fns && (fns.length = 0);
        }
        else {
            // 反向遍历
            for (var i = fns.length - 1; i >= 0; i--) {
                var _fn = fns[i];
                if (_fn === fn) {
                    // 删除订阅回调函数
                    fns.splice(i, 1);
                }
            }
        }
    };

    return {
        listen: listen,
        trigger: trigger,
        remove: remove
    }
}());
分享到:
评论

相关推荐

    js发布订阅 index.html

    js发布订阅模式

    javaScript发布订阅模式代码实现思路

    javaScript发布订阅模式代码实现思路,有平台,发布者,订阅者

    js实现的订阅发布者模式简单示例

    在JavaScript中,我们可以创建一个简单的订阅发布者实现,如示例所示。首先,我们创建一个名为`pubsub`的闭包,该闭包包含三个核心方法:`publish`、`subscribe`和`unsubscribe`。 1. `publish`方法:这个方法用于...

    JavaScript手写发布订阅

    JavaScript手写发布订阅

    callbacksjs原生js发布订阅模式的实现参考jquery的callbacks模块

    本文将深入探讨原生JS实现的发布订阅模式,以及如何参考jQuery的callbacks模块来构建类似功能。 首先,我们需要理解回调函数的核心概念。回调函数是一种将函数作为参数传递给另一个函数,然后在适当的时间由该函数...

    js代码-实现发布/订阅模式

    在压缩包中的 `main.js` 文件中,你可以找到一个实际的发布/订阅模式实现示例。`README.txt` 文件可能包含有关如何使用这个实现的说明。通过阅读和理解这些文件,你可以更好地掌握JavaScript中的发布/订阅模式。

    《前端异步编程系列之事件发布/订阅模式》附件:eventjs模块

    本篇文章将深入探讨“事件发布/订阅模式”,并结合提供的`eventjs`模块进行详细讲解。 事件发布/订阅模式(也称为发布/订阅者模式或观察者模式)是一种设计模式,它允许对象之间的解耦。在这种模式中,我们有三个...

    node.js 发布订阅模式的实例

    实例如下: //导入内置模块 let EventEmitter = require('events'); let util=require('util'); //Man继承EventEmitter util.inherits(Man,EventEmitter); //创建一个函数 function Man(){} ...man.on('失恋',findGirl...

    redis绑定webSocket发布订阅连接推送

    标题中的“redis绑定webSocket发布订阅连接推送”指的是在Web应用中使用Redis作为消息中间件,结合WebSocket技术来实现实时的数据推送。Redis是一个高性能的键值存储系统,支持多种数据结构,如字符串、哈希、列表、...

    js订阅mqtt.rar

    这个压缩包“js订阅mqtt.rar”可能还包含了示例代码、配置文件和详细步骤,帮助开发者快速理解和实现H5页面直接订阅和发布MQTT消息的功能。这大大简化了前端与物联网设备的直接通信,尤其适用于那些希望在不增加后端...

    js 发布订阅模式的实例讲解

    //发布订阅模式 class EventEmiter{ constructor(){ //维护一个对象 this._events={ } } on(eventName,callback){ if( this._events[eventName]){ //如果有就放一个新的 this._events[eventName].push...

    pubAndSubjs基于浏览器内置API实现的发布订阅模式封装

    在本例中,`pubAndSub.js`是一个封装了发布订阅模式的库,利用了浏览器内置的API,使得开发者可以在应用中更方便地实现事件驱动的编程。 首先,我们要理解发布订阅模式的基本概念。在这个模式中,"发布者"...

    小而美的pubsub库发布订阅者模式

    `pubsub-js` 是一个轻量级的JavaScript库,它实现了一个简单易用的发布订阅者模式,为开发者提供了高效的消息传递机制。 Pub/Sub模式的核心思想是发布者与订阅者之间的解耦。发布者只需要发布消息,而不需要知道谁...

    事件订阅发布JavaScript库onfire.js.zip

    onfire.js 是一个很简单的事件分发的Javascript库(仅仅 0.9kb),简洁实用。 可以用于: 简单的事件分发; 在 react / vue.js / angular 用于跨组件的轻量级实现; 事件订阅...

    JavaScript事件发布/订阅模式原理与用法分析

    在讲解JavaScript事件发布/订阅模式的原理和使用方法之前,我们先要了解什么是设计模式。设计模式是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被...

    pubsub:纯javascript发布订阅实现

    在JavaScript中实现发布订阅模式,通常涉及创建一个事件中心或者事件管理器,它负责管理和调度事件的发布与订阅。下面是一个简单的纯JavaScript实现: ```javascript function PubSub() { this.events = {}; } //...

    JS模式之简单的订阅者和发布者模式完整实例

    在现代Web前端开发中,几乎所有的JavaScript框架和库都提供了观察者模式的实现,例如在Vue.js中,响应式系统就是基于发布者和订阅者模式构建的。通过使用观察者模式,开发者可以更灵活地管理组件或模块之间的通信和...

    JavaScript实现与使用发布/订阅模式详解

    在JavaScript中实现发布/订阅模式,首先需要一个发布者对象,该对象包含以下几个关键部分: 1. **subscribers**:这是一个存储订阅者对象的数组,每个订阅者对应一个特定的事件类型。 2. **subscribe()**:订阅方法...

Global site tag (gtag.js) - Google Analytics