pubsub-js使用

1.pubsub-js介绍

pubsub-jsopen in new window是一个用JavaScript编写的基于主题的发布/订阅库。
pubsubJs具有同步解耦,因此主题是异步发布的。
这有助于保持程序的可预测性,因为在使用者处理主题时,主题的发起者不会被阻塞。
对于喜欢冒险的人来说,pubsubs还支持同步主题发布。
这可以在某些环境(浏览器,不是所有环境)中提供加速,
但也可能导致一些非常难以推理的程序,其中一个主题在同一执行链中触发另一个主题的发布。

2.pubsub-js安装

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

 npm i pubsub-js

main.js中全局导入pubsub-js

import PubSub from 'pubsub-js'
Vue.use(PubSub)

3.pubsub-js使用

基本使用方法(不同组件之间的传值)

订阅:
import PubSub from 'pubsub-js'

// 创建一个回调函数,收到发布的消息后执行 create a function to subscribe to topics
const subFn = function (msg, data) {
    console.log( msg, data );
};

// add the function to the list of subscribers for a particular topic
// we're keeping the returned token, in order to be able to unsubscribe
// from the topic later on
const sub$ = PubSub.subscribe('MY TOPIC', subFn);
发布:
import PubSub from 'pubsub-js'

// 异步发布
PubSub.publish('MY TOPIC',"hello world!")

// 同步发布,在某些环境可能更快
PubSub.publishSync('MY TOPIC', 'hello world!');
取消订阅
// 取消订阅的消息
// unsubscribe this subscriber from this topic
PubSub.unsubscribe(sub$);
// 取消订阅的回调函数
PubSub.unsubscribe(subFn);
取消相关的消息订阅(Clear all subscriptions for a topic)
PubSub.subscribe('a', myFunc1);
PubSub.subscribe('a.b', myFunc2);
PubSub.subscribe('a.b.c', myFunc3);

// a.b与a.b.c的订阅主题将取消,a将执行
PubSub.unsubscribe('a.b');  
// no further notifications for 'a.b' and 'a.b.c' topics
// notifications for 'a' will still get published

取消所有的消息订阅
PubSub.clearAllSubscriptions();
Contributors: masecho