加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

rx-java2 – 在RxJava2中创建自定义运算符?

发布时间:2020-12-15 00:55:36 所属栏目:Java 来源:网络整理
导读:我很难找到如何使用Rx Java 2创建自定义运算符的示例.我考虑过几种方法: 使用Observable.create,然后从源observable对其进行flatMaping.我可以让这个工作,但它感觉不对.我最终创建了一个静态函数,我提供了源Observable,然后是源上的flatMap.在OnSubscribe中
我很难找到如何使用Rx Java 2创建自定义运算符的示例.我考虑过几种方法:

>使用Observable.create,然后从源observable对其进行flatMaping.我可以让这个工作,但它感觉不对.我最终创建了一个静态函数,我提供了源Observable,然后是源上的flatMap.在OnSubscribe中,然后我实例化一个我传递发射器的对象,它处理和管理Observable / Emitter(因为它不是微不足道的,我希望所有内容都尽可能封装).
>创建一个ObservableOperator并将其提供给Observable.lift.我找不到RxJava 2的任何这个例子.我必须调试我自己的例子,以确保我对上游和下游的理解是正确的.因为我找不到关于RxJava 2的任何示例或文档,我有点担心我可能会意外地做一些我不应该做的事情.
>创建我自己的Observable类型.这似乎是底层运算符的工作方式,其中许多都扩展了AbstractObservableWithUpstream.虽然这里有很多事情,但似乎很容易错过一些东西或做一些我不应该做的事情.我不确定我是否应该采取这样的方法.我逐步完成了心理过程,看起来很快就会变得毛茸茸.

我将继续使用选项#2,但是认为值得问一下,在RxJava2中支持的方法是什么,并且还要查明是否有任何文档或示例.

解决方法

不建议初学者使用编写操作符,并且可以通过现有运算符实现许多所需的流程模式.

你看过RxJava关于writing operators for 2.x的维基吗?我建议从上到下阅读.

>使用create()是可能的,但是大多数人使用它来发出带有for-each循环的List的元素,而不是认识到Flowable.fromIterable这样做.
>我们保留了此扩展点,尽管RxJava 2运算符本身不使用lift().如果你想避免使用选项3的样板,那么你可以尝试this route.
>这就是RxJava 2操作符的实施方式. AbstractObservableWithUpstream是一个小便利,external implementors不是必需的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读