美文网首页
ravajava1.0的转换思路1(事件转换)

ravajava1.0的转换思路1(事件转换)

作者: 题_bef7 | 来源:发表于2019-06-24 11:03 被阅读0次

RxJava中最常用到的两个类Subscriber<T>的抽象(即订阅者)和Observable<T>(被订阅对象),而转换过程主要用到两个接口类Func1<R,T>和Action<T>,本文通过这4个类来解释rxjava的转换工作机制。

可以参照下图片:

总结:我们把Onsubscribe当成事件发射器,T为原始事件,Observable为被订阅者,Subscriber为订阅者,订阅者的onNext方法为处理事件能力;当我们用订阅者R去订阅被订阅者T时,就需要转换被订阅者(即T转成R,其实就是新建一个被订阅者R);转换被订阅者内部过程主要分工给Func1<R,T>转换器1, Func1<Subscriber<T>,Subscriber<R>>转换器2。

我们的目标订阅者为Subscriber<R>,当订阅者R订阅事件时,会通知被订阅者(一个新建的被订阅者Observable<R>)来发出事件,而被订阅者R本身没持有事件,因而通知他的上级Observable<T>来发出初始事件,事件T是由初始被订阅者Observable<T>的OnSubscribe<T>发射,T被发射出来后,需要有一个订阅者Subscriber<T>来处理,这时候转换器2把目标订阅者Subscriber<R>转成转成订阅者Subscriber<T>,并且把订阅者<R>的处理事件能力给到订阅者<T>,而订阅者<T>在拿到事件T后,他的处理方式就交由刚刚获得的订阅者<R>的能力来处理,因而需要转换器1来把事件T转成事件R(因为订阅者<R>只能处理R事件),再交给订阅者<R>处理。

总流程:最下级订阅者首先通知最下级被订阅者发出事件,然后被订阅者依次通知上级发出事件,直到原始被订阅者发出事件,然后事件从被订阅者依次向下传递,并且由相应的订阅者依次委托下级订阅者处理,直到最下级订阅者处理事件,而中间由转换器对事件和订阅者进行相应转换。

相关文章

  • ravajava1.0的转换思路1(事件转换)

    RxJava中最常用到的两个类Subscriber的抽象(即订阅者)和Observable(被订阅对象...

  • 思路转换

    昨天下午整理单子的时候,想起某人还欠我二百多元钱货款没给。钱剩的越少,越容易忘记。 于是发信息给他:你不是说胶没用...

  • 转换思路

    看过这样一个犹太人的故事: 一个犹太人走进纽约的一家银行,来到贷款部,大模大样地坐下来。 “请问先生有什么事情吗?...

  • 转换思路

    一直以来自己都很忙,认真总结一下,主要有两个原因。一是布置下去的工作,下属自己不琢磨,譬如一份文件,他都不...

  • 转换思路

    昨天遇到一个事情,一个员工因为要去其他部门帮忙三个月,但是她好久没有离开现在这个岗位… 所以就感觉自己胜任不了,非...

  • shp 文件属性表 转 json

    主要思路:先转换成 xls 文件,再用 xls-to-json转换成 json 文件。 1、用 excel 打开 ...

  • JavaScript描述数据结构之栈

    栈 特点:先进后出 栈的实现 使用栈的实例 数制间的转换 将数值n转换为以b为基数的数字,实现转换的算法思路:(1...

  • gis各种地图工具的使用(附自动生成海量的geojson数据的j

    思路:制作excel表格->转换成shp文件格式->在转换成geojson数据格式的json文件 1、手动输入数据...

  • (3)进制转换 矩阵转置 字符处理

    通信 1.进制转换 (1)十进制数转换为其他进制数一个十进制正整数m转换成r进制数的思路是,将m不断除以r取余数,...

  • js基础篇:类型转换

    1.显示转换:(1)转换Boolean:Boolean(需要转换的值);(2)转换数字用parseInt(需要转换...

网友评论

      本文标题:ravajava1.0的转换思路1(事件转换)

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