eventing-bus详解

Posted zlzbt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eventing-bus详解相关的知识,希望对你有一定的参考价值。

事件总线 eventing-bus

安装

1.Node.js
npm install --save eventing-bus
2.Webpack:
yarn add eventing-bus
3.NPM
npm install --save eventing-bus

订阅事件

import EventBus from 'eventing-bus'

const callback = (name) =>  console.log(`Hello, $name!`) ;

EventBus.on("exampleEventName", callback);

发布事件

import EventBus from 'eventing-bus';

EventBus.publish("exampleEventName", "Watson");
/* After registering the subscription and publishing an event you should see
   "Hello, Watson!" printed in your console. */

多个事件总线

默认情况下,您只有一个单例事件总线实例,其中包含应用程序所有部分的订阅。但是在创建自己的私有实例的过程中没有任何阻碍(例如,对于复杂应用程序的每个逻辑上不同的部分)

import EventStream from 'eventing-bus/lib/event_stream';

/* You can use EventStream both as a constructor and as a factory function. */
const privateBus = EventStream();
const newPrivateBus = new EventStream();

这些流通过创建不会分享任何订阅,也不事件

注销事件处理程序

如果您需要注销注册(一种典型的情况是在清理UI库之后进行的注册),则可以通过以下两种方式进行:

传回的通话价值 #on
注册事件处理程序后,返回提示将是注销特定处理程序的函数

import EventBus from 'eventing-bus';

const subscription = EventBus.on('event', () =>  console.log('test') )

EventBus.publish('event') // Console: 'test'

// This will unregister this (and only this) subscription.
subscription();

EventBus.publish('event') // No output in console

用 #unregisterCallback
如果您无法轻松获取返回的值#on,则可以致电#unregisterCallback。另一个好处是该功能不需要知道事件名称。通过这种方式,您可以取消注册suck回调的每一次用法

import EventBus from 'eventing-bus';

const callback = () =>  console.log('test') 

EventBus.on('eventA', callback)
EventBus.on('eventB', callback)

EventBus.publish('eventA') // Console: 'test'
EventBus.publish('eventB') // Console: 'test'

EventBus.unregisterCallback(callback)

EventBus.publish('eventA') // No output in console
EventBus.publish('eventB') // No output in console

批量注销订阅

由于默认情况下EventBus是总线的单例实例,因此有时可能需要注销所有订阅(最值得注意的是-在测试过程中)。可以通过调用以下方法来完成:

#unregisterAllCallbacks
删除所有事件处理程序。

import EventBus from 'eventing-bus';

EventBus.unregisterAllCallbacks();

#unregisterCallbacksForEvent
删除特定事件的所有事件处理程序

import EventBus from 'eventing-bus';

EventBus.on('exampleEvent', () =>  console.log("EXAMPLE") );
EventBus.publish("exampleEvent"); // Logs `EXAMPLE`

EventBus.unregisterCallbacksForEvent('exampleEvent');

EventBus.publish("exampleEvent"); // Empty output

详细参考地址:参考文档

以上是关于eventing-bus详解的主要内容,如果未能解决你的问题,请参考以下文章

eventing-bus详解

jvm内存详解-----详解------详解

搜索引擎系列六:Lucene搜索详解(Lucene搜索流程详解搜索核心API详解基本查询详解QueryParser详解)

linux 操作系统笔记基础命令

决策树原理与Sklearn参数详解

linux打包压缩工具详解