js设计模式 发布订阅模式
2019-04-14 10:18
405 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/JsongNeu/article/details/89293380
js设计模式 发布订阅模式
发布订阅模式
发布订阅模式中有一个注册中心,有订阅和发布方法,订阅者需要带着方法去订阅一个事件,当这个事件被发布时,订阅者执行这个方法
import _ from 'lodash'; // import { MntrCurrentDimension } from './mntr-current-dimension'; /* * @Description: 注册中心 * @Author: jsong * @LastEditors: jsong * @Date: 2019-04-12 08:58:30 * @LastEditTime: 2019-04-14 10:11:24 */ export class MntrPublish { // topics: {}; // uid = -1; // dashBoardDimension: MntrCurrentDimension; constructor() { this.topics = {}; this.uid = -1; } // 订阅一个事件,把这个事件放到 全局的 对象中 用于 发布时调用 subscribe(event, func) { if (!this.topics[event]) { this.topics[event] = []; } this.topics[event].push({ token: ++this.uid, func: func }); } // 发布 调用订阅时 的方法 publish(event, args = null) { if (!this.topics[event]) { return false; } const subscribers = this.topics[event]; let len = subscribers ? subscribers.length : 0; while (len--) { subscribers[len].func(args, event); } } unsubscribe(token) { for (const t in this.topics) { if (this.topics[t]) { _.pull(this.topics[t], ['tocken', token]); } } } // set(dashBoardDimension: MntrCurrentDimension) { // this.dashBoardDimension = dashBoardDimension; // return this; // } }
const publish = new MntrPublish(); publish.subscribe('event', () => console.log(' subscribe event ')); publish.publish('event');
相关文章推荐
- JS设计模式之发布订阅模式
- js设计模式中发布与订阅实现观察者模式例子
- js设计模式之代理模式以及订阅发布模式
- node.js笔记之订阅发布设计模式
- js设计模式--发布订阅模式
- JS设计模式 - 观察者模式与发布/订阅模式
- JS设计模式(5)发布订阅模式
- JS中什么是发布--订阅模式?
- js 发布订阅/观察者模式
- 设计模式(二)观察者模式和发布订阅模式(Observer)
- java笔记--设计模式之观察者(订阅/发布)模式
- 设计模式入门--发布订阅模式
- js:发布订阅模式
- [js高手之路]设计模式系列课程-委托模式实战微博发布功能
- 【JavaScript设计模式】行为型设计模式--发布-订阅模式
- node.js 发布订阅模式的实例
- 【JS】发布/订阅模式
- 【学习笔记javascript设计模式与开发实践(发布--订阅模式)----8】
- javascript 设计模式 -- 发布/订阅模式
- 设计模式(三)观察者模式Observer(发布订阅)