发布订阅模式

news/发布时间2024/4/29 22:15:21

概述

发布-订阅模式其实是一种对象间一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都将得到状态改变的通知。

订阅者(Subscriber)把自己想订阅的事件注册(Subscribe)到调度中心(Event Channel),当发布者(Publisher)发布该事件(Publish Event)到调度中心,也就是该事件触发时,由调度中心统一调度(Fire Event)订阅者注册到调度中心的处理代码。

代码实现

class EventChannel {private handles: { [key: string]: Function[] } = {}on(event: string, callback: (...args: any[]) => void) {if (!this.handles[event]) this.handles[event] = []if (!this.handles[event].includes(callback)) this.handles[event].push(callback)}once(event: string, callback: (...args: any[]) => void) {function fn(this: EventChannel, ...args: any[]) {callback.apply(this, args)this.off(event, fn)}this.on(event, fn)}off(event: string, callback: Function) {if (this.handles[event]) {const index = this.handles[event].findIndex(fn => fn === callback)index > -1 && this.handles[event].splice(index, 1)}}emit(event: string, ...args: any[]) {if (this.handles[event]) {this.handles[event].forEach(fn => {fn.apply(this, args)})}}
}

应用场景

  • vue组件通信事件总线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/67137447.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

1. vue3中使用cesium

一、创建Vue3项目 npm create vue二、安装依赖 npm i cesium vite-plugin-cesium -D三、修改配置 修改vite.confg.js import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite import vue from @vitejs/plugin-vueimport cesium from vite-plugin-cesiu…

vue 不是内部或外部命令,也不是可运行的程序 或批处理文件解决方法

查看信息 npm config list根据prefix路径,查看是否有vue.cmd文件 参考了这篇 感觉很整齐 如果没有就安装vue npm install -g vue再安装脚手架vue-cli // 安装 npm install -g @vue/cli // 或者 cnpm install -g @vue/cli // 或者 yarn global add @vue/cli然后配置环境变量,…

ES 国产化

背景 Elasticsearch 这些年来在搜索领域一直是领头羊。国内也有非常多的企业在使用 Elasticsearch 来做查询搜索、数据分析、安全分析等等。甚至一些很重要的行业、系统都在使用 Elasticsearch。在使用 Elasticsearch 的道路上狂飙的时候,我们也观察到了一些问题:Elasticsear…

3. 注意力机制

深度学习中的注意力机制(Attention Mechanism)是一种模仿人类视觉和认知系统的方法,它允许神经网络在处理输入数据时集中注意力于相关的部分。通过引入注意力机制,神经网络能够自动地学习并选择性地关注输入中的重要信息,提高模型的性能和泛化能力。 最典型的注意力机制包…

HTML学习记录(2)(HTML常用标签)

一,p与hr p段落可以将HTML文段分割为若干段落。段落常用<p>标签来定义,用align来定义段落的对齐方式实列 <p>我是第一个段落</p> <p>我是第二个段落</p> <p align="left">我在左边</p> <p align="center"&…

[分享] Silence - 专注于阅读的博客园主题

本篇效果即为本博客皮肤。 (食用前请先开通JS权限)博客皮肤:Custom 侧边公告: <script> window.$silence = {avatar: https://ts1.cn.mm.bing.net/th/id/R-C.bf673c3207334d32efe2fa24b3082dac?rik=YzLZMg%2fLizJrtQ&riu=http%3a%2f%2fimg.touxiangwu.com%2fupload…