首页 > 其他分享 >js 实现简单发布订阅模式

js 实现简单发布订阅模式

时间:2024-04-01 09:25:18浏览次数:30  
标签:订阅 模式 event listener emitter 事件 js events

1.事件调度器

class EventEmitter {
  constructor() {
    this.events = {};
  }
 
  on(event, listener) {
    if (!this.events[event]) {
      this.events[event] = [];
    }
    this.events[event].push(listener);
  }
 
  emit(event, ...args) {
    if (this.events[event]) {
      this.events[event].forEach(listener => {
        listener.apply(this, args);
      });
    }
  }
}

订阅事件

// 使用示例
const emitter = new EventEmitter();
 
// 订阅事件
emitter.on('greeting', (name) => {
  console.log(`Hello, ${name}!`);
});

发布事件

// 发布事件
emitter.emit('greeting', 'World'); // 控制台输出: Hello, World!

 

标签:订阅,模式,event,listener,emitter,事件,js,events
From: https://www.cnblogs.com/sugarwxx/p/18107737

相关文章

  • js数组置顶元素(将某一项移到首位)
    方法1letarr=[1,2,3]//假设选中的元素为第二个arr.forEach((item,index)=>{ if(item===2){ arr.unshift(arr.splice(index,1)[0])}})console.log(arr)//[2,1,3]方法2letarr=[1,2,3,4]letkey=3//假设选中的元素为第二个for(leti=1;i<arr.length;i++){if(arr[i]==......
  • 【前端面试3+1】01闭包、跨域、路由模式
    一、对闭包的理解定义:闭包是指在一个函数内部定义的函数,并且该内部函数可以访问外部函数的变量。闭包使得函数内部的变量在函数执行完后仍然可以被访问和操作。特点:闭包可以访问外部函数的变量,即使外部函数已经执行完毕。闭包可以保持外部函数的作用域不被销毁,从而延长变......
  • 【Node.js】大文件上传
    概述大文件上传通常采用分片上传。如果因为某些原因上传突然中断,解决问题之后可以接着之前的分片上传,而不需要从头开始上传,也就是断点续传。此外还可以利用多个网络连接并行上传多个分片,提高上传速度。注:前端不能使用live-server去启动,live-server启动会在上传文件时......
  • Cursor:你的前端“超能力”助手,一句话搞定HTML、CSS、JS!
    一、简介Cursor,不仅仅是一个开发工具,更是你前端路上的“超级英雄”!它融合了GPT-4的AI智慧,能听懂你的“心声”,一键将你的创意转化为神奇的HTML、CSS和JavaScript代码。告别繁琐的编码工作,让Cursor成为你创意的翅膀,带你飞翔在前端的世界!链接:Cursor官网二、功能亮点1、一......
  • 七、使用jsPlumb实现流程图功能--Connection事件和拦截器
    在一个交互式的流程图配置中,连线可能是最高频的操作。jsPlumb也提供了相对应的事件和拦截器可以让开发人员做一些符合需求的功能。一、Connection事件Connection事件是在行为发生之后的一个通知,Connection常用的一些事件有:EVENT_CONNECTION:连线创建之后触发的事件。EVENT_CON......
  • Blazor学习记录_9.C#和JS互操作__
    23.C#和JS互操作23.1C#调用JS,使用IJSRuntimejs代码:<buttononclick="javascript:alter("提示信息")">点我弹出提示</button>C#调用JS:JsInteractive.razor页面代码,InvokeVoidAsync()方法和InvokeAsync()方法@Page"/jsinteractive"<button@onclick=......
  • delphi基于数据模型(data-model)JSON序列
    delphi基于数据模型(data-model)JSON序列需要DELPHI10.2以上版本才能支持。1)实现JSON序列/还原的泛型模板unitserialize;///<author>cxg2024-1-11</author>interfaceusessystem.Classes,System.SysUtils,System.JSON.Serializers;typeTSerial<T:record>......
  • 多目标应用:基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimize
    一、柔性作业车间调度问题柔性作业车间调度问题(FlexibleJobSchedulingProblem,FJSP)的描述如下:n个工件{J,J......
  • NodeJS 高校学业预警系统 毕业设计-10551
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,教育行业当然也不能排除在外。高校学业预警系统是以实际运用为开发背景,运用软件工程开发方法,采用Node.JS技术构建的一个管理系统。整个开发过程首先对软件系......
  • 设计模式,装修模式,Php代码演示,优缺点,注意事项
    装饰模式(DecoratorPattern)是一种结构型设计模式,它允许动态地向一个现有对象添加新的功能或行为,而不改变其原始结构。在PHP中,可以使用类的继承和组合来实现装饰模式。下面是一个简单的PHP装饰模式示例代码:首先,定义一个基类`Component`,它代表要装饰的对象:```phpabstract......