美文网首页
浅谈js中的发布订阅模式

浅谈js中的发布订阅模式

作者: 蔷薇心情 | 来源:发表于2019-10-13 15:09 被阅读0次

需求

image-20191013144734987

如图所示,该页面中标题处的Daisy和姓名中的Daisy都取自name字段,当输入框的值改变时,会同时出发上面两处名称的修改;

发布订阅模式

用发布订阅模式来考虑这个问题思路如下:

订阅内容:name字段

订阅者:标题改变事件、姓名改变事件

发布:当name改变时,对订阅name字段的所有事件循环通知

代码的实现

首先定义一个监听对象,包含添加订阅者方法(添加订阅者和订阅事件)和通知订阅者方法

// let observe = {

​ map:{},

​ subscribe:function(key,cb){

​ let map = this.map;

​ if( !map[key] ){

​ map[key] = [];

​ }

​ map[key].push(cb);

​ },

​ publish:function(key,changevalue){

​ let mapValues = this.map[key];

​ for( var i=0;i<mapValues.length;i++ ){

​ mapValuesi

​ }

​ }

​ }

//首次加载默认出发监听模式,将name添加到订阅者中,并将对应的订阅事件添加到name对应的数据中

window.onload = function(){

​ let name = 'Daisy';

​ observe.subscribe('name',function(name){

​ document.querySelector('.name').innerHTML = name;

​ })

​ observe.subscribe('name',function(name){

​ document.querySelector('.title').innerHTML = name+'的简介';

​ })

​ observe.publish('name',name)

}

//当input的onchange事件触发name值改变,触发订阅了name字段的所有事件做出改变

document.querySelector('.username').onchange = function(){

​ name = this.value;

​ observe.publish('name',this.value)

}

html部分代码:

​ <h1 class="title"></h1>

​ 姓名:<span class="name"></span>

​ 年龄:<span class="">18岁</span>

​ <input type='text' class='username'>

运行效果

image-20191013150829829

相关文章

  • 浅谈js中的发布订阅模式

    需求 如图所示,该页面中标题处的Daisy和姓名中的Daisy都取自name字段,当输入框的值改变时,会同时出发上...

  • JS发布-订阅模式

    发布-订阅模式广泛应用于异步编程中,这是一种替代传递回调函数的方案。 现实中的例子: 小明想买房,到了售楼处被告知...

  • js 发布订阅模式

    发布订阅模式:订阅者(Subscriber)把自己想订阅的事件注册(Subscribe)到调度中心(Topic),...

  • 一份头条前端面试准备[整理稿]

    JS打乱数组 JS ajax JS bind 实现 懒加载 JS实现promise JS发布订阅模式 JSONP ...

  • js 观察者和发布订阅

    发布订阅 js中的事件模型就是基于发布订阅设计的。相当于订报的人和送报人的关系。js中很多都有发布订阅的思想。具体...

  • 手写简单的vue双向绑定

    JS:仿vue数据初始化 核心:发布订阅者模式

  • JS 发布者、订阅者模式

    下面是ES5如何实现JS发布订阅模式。 原理在代码中。 function EventEmitter() { th...

  • 浅谈js的设计模式之订阅和发布

    概念 发布---订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,...

  • 多异步之间的协作

    《深入浅出 Node.js》阅读随笔 Node.js 的中发布/订阅模式,一般用于解决一次发布对应多次订阅的情况。...

  • kafka分布式流处理平台

    发布订阅模式: 发布订阅模式:发布者将消息投递到Topic中,数据在持久化在Topic中,只有订阅了相应Topic...

网友评论

      本文标题:浅谈js中的发布订阅模式

      本文链接:https://www.haomeiwen.com/subject/rsohmctx.html