微信小程序----使用发布订阅模式

61 阅读2分钟

微信小程序----使用发布订阅模式

目录

[TOC]

前言

发布-订阅模式 又叫观察者模式。 它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。

在JavaScript开发中,我们一般用事件模型来替代传统的发布订阅模式。

①发布—订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的方案。比如,我们可以订阅ajax请求的error、succ等事件。

②可以取代对象之间硬编码的通知机制,一个对象不用再显式地调用另外一个对象的某个接口。

买房者收到售楼处发布的房源售卖通知。售楼处就是发布者,买房者就是订阅者,订阅的是售卖房源的信息。买房者有很多人,他们会订阅不同的房源(不同的地理位置,价格、周边等),发布者可以根据不同的订阅者发布不同的信息。

小程序使用PubSubJS

PubSubJS 是一个用 JavaScript 编写的基于主题的 发布/订阅库。
PubSubJS 有同步解耦,所以主题是异步发布的。这有助于使您的程序保持可预测性,因为在消费者处理主获取 PubSubJS题时,主题的发起者不会被阻止。

获取 PubSubJS

通过 npm ( npm install pubsub-js)安装

npm install pubsub-js

直接从 CDN 使用它

从 GitHub下载标记版本

github.com/mroderick/P… GitHub - mroderick/PubSubJS: Dependency free publish/subscribe for JavaScript

npm 构建

选择微信开发者工具顶部栏 -----> 工具 ------> 构建npm

使用pubsub-js

1、使用publish发布消息
import PubSub from 'pubsub-js'
 
PubSub.publish('data', 'data')
2、使用subscribe函数订阅消息
import PubSub from 'pubsub-js'
PubSub.subscribe('data',(msg,data)=>{
  console.log(data)
});
3.pubsub.publish触发一次pubsub.subscribe调用多次解决

上面是关于pubsub的API,我们需要在我们每次接受数据pubsub.subscribe的时候,先执行pubsub.unsubscribe操作就好了,就完美解决了,这样你接收以后的callback只执行一次。

pubsub.unsubscribe('aa');
pubSub.subscribe("aa",(name,context,aaa)=>{
        console.log("订阅者",name,context,aaa);
    })