首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

vue实现一个eventBus

eventBus应该有些听过,其实就是一个事件发布订阅的功能。vue提供了实例方法事件,就是on、once、off、emit。...在mainjs里面在vue原型上面挂载一个变量: Vue.prototype....$eventBus = new Vue(); 我在home页面注册了一个事件: this.eventBus.on('home', (msg) => { console.log('home:' + msg...你先进入home进行订阅,接着切换到live,控制台输出: home:这是live emit 如果我在back页面也注册一个home事件: this.eventBus.on('home', (msg)...通过vue提供的api,很容易实现一个事件的发布订阅,基本的on、off、once、emit都很容易就实现了。在某些逻辑下还能当作组件间传递数据来使用。之后应该会分享自己去实现这样一个api。 (完)

61420
您找到你想要的搜索结果了吗?
是的
没有找到

EventBusEventBus 源码解析 ( EventBus 构建 | EventBus 单例获取 | EventBus 构造函数 | EventBus 构建者 )

文章目录 一、EventBus 单例获取 二、EventBus 构造函数 三、EventBus 构建者 一、EventBus 单例获取 ---- 在 EventBus 中 , 不论是进行注册 , 取消注册..., 还是发送信息 , 都需要调用 EventBus.getDefault() , 获取一个 EventBus 的实例对象 , 这个实例对象是 单例对象 ; 在 EventBus.getDefault(...前 , 突然在其它线程中创建了 EventBus 并且注册了订阅者 , 新创建的 EventBus 实例对象肯定会覆盖旧的 EventBus , 但是旧的 EventBus 中的订阅者就彻底消失了 ;...双重加锁校验 可以保证 EventBus 实例对象 全局 全时间线 唯一 ; /** * EventBus是Java和Android的中央发布/订阅事件系统。...EventBus() 方法创建了 EventBus 实例对象 , 在构造函数中 , 又调用了 EventBus(EventBusBuilder builder) 构造函数 , 传入默认的 构建者 EventBusBuilder

65910

EventBusEventBus 源码解析 ( 取消订阅 )

文章目录 一、取消订阅 二、取消订阅 unsubscribeByEventType 方法 一、取消订阅 ---- 【EventBusEventBus 使用示例 ( 最简单的 EventBus 示例 )...示例中 , 在 MainActivity 中调用 // 取消注册 EventBus.getDefault().unregister(this); 方法 , 取消订阅 ;...取消订阅是以对象为单位的 , 一旦调用了 EventBus 的 unregister 方法 , 并传入 订阅者对象 , 则该订阅者对象中的所有 订阅方法 , 都会被 取消订阅 ; 在 【EventBus...】EventBus 源码解析 ( 注册订阅者总结 | 从封装的数据结构角度分析 EventBus ) 博客中 , 介绍到注册订阅者 , 是将 事件参数类型 和 订阅者信息 添加到 Map<Class<?...subscriptionsByEventType 集合中查找参数类型对应的 订阅者类 对应的订阅者方法 , 从上述集合中移除相应的 订阅者类及相关的订阅方法 , 即可完成 取消订阅的操作 ; public class EventBus

46510

EventBus使用详解(一)——初步使用EventBus

相关文章: 1、《EventBus使用详解(一)——初步使用EventBus》 2、《EventBus使用详解(二)——EventBus使用进阶》 一、概述 EventBus是一款针对Android优化的发布...1、下载EventBus的类库 源码:https://github.com/greenrobot/EventBus 2、基本使用 (1)自定义一个类,可以是空类,比如: public class AnyEventType...首先,在EventBus中,获取实例的方法一般是采用EventBus.getInstance()来获取默认的EventBus实例,当然你也可以new一个又一个,个人感觉还是用默认的比较好,以防出错。...后面再添加EventBus相关的玩意。...().unregister(this);//反注册EventBus } } 4、发送消息 发送消息是使用EventBus中的Post方法来实现发送的,发送过去的是我们新建的类的实例!

69240

vue 事件总线EventBus的概念、使用以及注意点

vue 事件总线 前言 正文 EventBus的简介 EventBus的使用 一、初始化 二、向EventBus发送事件 三、接收事件 四、移除监听事件 结束语 前言 vue组件中的数据传递最最常见的就是父子组件之间的传递...这时就要用到 vue 中的事件总线 EventBus的概念 公众号:前端印象 不定时有送书活动,记得关注~ 关注后回复对应文字领取:【面试题】、【前端必看电子书】、【数据结构与算法完整代码】、【前端技术交流群...第一种初始化方法 import Vue from 'vue' //因为是全局的一个'仓库',所以初始化要在全局初始化 const EventBus = new Vue() 第二种初始化方法(本文选用这种初始化方法...) //在已经创建好的Vue实例原型中创建一个EventBus Vue.prototype....$EventBus = new Vue() 二、向EventBus发送事件 发送事件的语法:this.EventBus.emit(发送的事件名,传递的参数) 已经创建好EventBus后我们就需要向它发送需要传递的事件

1.5K10

EventBus初体验

前言 本文主要给大家讲述下本人使用EventBus的经验和体会。EventBus是一款针对Android的发布/订阅事件总线的开源框架。...2 什么是EventBus 本文的EventBus,是指greenrobot的 EventBus, 主要根据EventBus3.0 讲解; EventBus事件总线是指用于简化Android...EventBus消息和EventBus的对象实例有关, 用一个EventBus对象发送的消息,必须是用同一个EventBus对象注册的才能收到消息; // 发送黏性消息 EventBus.getDefault...EventBus实例有关系, 自己配置的EventBus实例,一般需要用单例保存, 确保发送和接收消息的地方,使用的是同一个实例。...进程间的通讯 Eventbus的发送消息和消息处理是和Eventbus实例有关的, 是无法跨进程传递消息的; 如果涉及到进程间通讯, 还是要使用Android系统的接口。

68410

EventBus源码解析

最近正好在看 EventBus 的源码。那就正好今天来说说 EventBus 的那些事儿。 EventBus 是什么呢(相信地球人都知道→_→)?...0003B EventBus 在 GitHub 上对于 EventBus 整体有一张示意图,很明确地画出了整个框架的设计原理: EventBus示意图 那么依据这张图,我们先从 “Publisher”...EventBus.getDefault() 来看一下 EventBus.getDefault() 的源码(文件路径:org/greenrobot/eventbus/EventBus.java): private...至此,整个 EventBus 发布/订阅的原理就讲完了。EventBus 是一款典型的运行观察者模式的开源框架,设计巧妙,代码也通俗易懂,值得我们学习。...今天就到这了,对 EventBus 有问题的同学可以留言,bye bye ! 0007B References EventBus 3.0 源码分析 老司机教你 “飙” EventBus 3

43230

EventBus使用详解

在同事的建议下学习了EventBus,在此做一下学习记录,侵权请告知一定及时删除。 EventBus概述   EventBus是针一款对Android的发布/订阅事件总线。...用法: (1)先定义一个类 public class MessageEvent { ....... } (2)在需要接收消息的页面注册事件(类似于动态注册广播) EventBus.getDefault...().register(this); (3)发送消息 EventBus.getDefault().post(new MessageEvent()); (4)处理消息( 在3.0之后,消息处理的方法可以随便取名...,当我们点击解除注册Unregist EventBus按钮的时候,再次点击Post Message也不会收到任何消息了。...尾语 学习到最后发现EventBus其实并不难,和我们之前用的广播很类似,同样需要注册和解除注册,处理消息的方法就类似于广播接收者的onReceive(),同样也可以选择粘性性质。

1.2K50

看看代码-EventBus

看看代码-EventBus EventBus是一个非常有名的Android开源项目,能非常方便地对应用内消息进行分发和处理,因近期在看消息通道相关的东西,就看了下代码学习一下,项目地址:EventBus...使用方法 gradle项目中加入dependencies即可使用: dependencies { compile 'org.greenrobot:eventbus:3.1.1' } 在需要注册的地方使用...查看EventBus的源码,在EventBus.class中有几个比较重要的变量 eventTypesChahe : 存储Event.class相关的类,包括Event类的父类、以及其实现的接口类 subscriptionsByEventType...通过对订阅者和发布者的解耦,简化了消息发送和注册的流程,且消息主体可以为任意类的对象,使得消息虽然在EventBus中进行统一的分发和管理,但并不需要在同一地方集中注册和索引。...EventBus的代码量不多,算是一个比较轻量的框架,暂不支持跨进程的消息传递,且由于EventBus中维护的Subscriber引用都是强引用,没有及时unregister的话,可能会导致内存泄漏。

54860

EventBus 使用总结

EventBus 使用总结 为什么要用EventBus?...EventBus是一个事件总线框架,观察者模式的变形,利用这个框架,我们可以方便高效地在Android组件间传递和处理数据,切换线程,降低代码耦合度。 本文基于 EventBus 3.0。 ?...EventBus的进阶使用 线程模式 EventBus总共有四种线程模式: 1.ThreadMode.POSTING 这是缺省模式,onEvent会在发布事件的线程中运行,即发布事件和接收处理事件将会运行在同一个线程...注解处理器 上文中对EventBus的使用是最基本的使用方法,因为观察者类信息要通过反射获取,所以效率有所欠缺,这里推荐使用Google的注解处理器AnnotationProcessor,在编译期获取类信息...这样配置之后,EventBus的效率就得到了提高,具体使用方法和之前相同。 使用EventBus后的代码混淆 使用EventBus后,代码混淆配置如下: ?

91610
领券