如何在反应式编程中抑制onComplete?(RxJava)

丹妮尔·塞加托(Daniele Segato)

感冒 Observable了,无法控制。订阅后,它总是会产生(如果没有错误):

onNext()

onCompleted()

我有一个这样的帮助器类:

public class Helper {

    private Subscription subscription;
    private ReplaySubject<MyData> subject;
    private Observable<MyData> coldObservable;

    public HelperClass(Observable<MyData> aColdObservable) {
        coldObservable = aColdObservable;
        subject = ReplaySubject.create(1);
        triggerRefresh();
    }

    public Observable<MyData> getObservable() {
        return subject.asObservable();
    }

    public void triggerRefresh() {
        if (subscription != null) {
            subscription.unsubscribe();
            subscription = null;
        }
        subscription = coldObservable
                              .subscribeOn(Schedulers.io())
                              .observeOn(Schedulers.computation())
                              .subscribe(subject);
    }
}

我对该主题有多个订阅,请为客户端使用以下伪代码:

public class Client {

    private final Helper helper;
    private Observable<MyData> proxiedObservable;

    public Client(Observable<MyData> coldObservable) {
        helper = new Helper(coldObservable);
    }

    public void init() {
        proxiedObservable = helper.getObservable()
                                                        .subscribeOn(Schedulers.io)
                                                        .observeOn(Schedulers.computation());

        Subscription a = newSubscription("A");
        Subscription b = newSubscription("B");
        Subscription c = newSubscription("C");
    }

    public Subscription newSubscription(String name) {
        return proxiedObservable.subscribe(data -> log("next " + name),
                                          throwable -> log("error " + name),
                                          () -> log("complete " + name));
    }

    public void refresh() {
        helper.triggerRefresh();
    }
}

在初始化时,将其打印在日志中:

next A
complete A
next B
complete B
next C
complete C

在此之后的某个时刻refresh(),我希望重复此完全相同的日志,而不打印任何内容。

显然,当冷事件观察者触发了complete事件时,它会自动将所有订阅退订到my proxiedObservable

我不需要complete事件,但是我确实需要新的MyData才能访问所有订阅。

有没有一种方法可以抑制onComplete事件?还是有另一种方法可以在这里实现我的需求?

丹露|

这个问题是RxRelay着手解决的-一个Subject可以接收的信号onComplete导致其关闭。

如果您不满意添加此依赖项,则可以使用use materialize()+从序列中filter()删除onComplete

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在函数式反应式编程中,如何在应用程序的两个部分之间共享状态?

来自分类Dev

如何在反应式扩展中实现并行扇出处理?

来自分类Dev

术语:功能反应式编程/ RX中的“故障”是什么?

来自分类Dev

RxJS反应式编程

来自分类Dev

HashMaps与反应式编程

来自分类Dev

如何在R / Shiny中建立反应式数据框?

来自分类Dev

如何在Java中对改装的反应式请求进行反抖动?

来自分类Dev

如何在空格键{{if}}中获取HTML,以使用Session变量进行反应式更改?

来自分类Dev

什么是反应式编程中的“可观察”?

来自分类Dev

如何在调用代码输入和基于计时器的输入之间进行交替以及如何使用反应式编程对其进行单元测试

来自分类Dev

在功能反应式编程中忽略/取消/中断流?

来自分类Dev

如何在反应式Android中打印控制台日志?

来自分类Dev

如何在Vue.js中设置反应式窗口参数 window.innerWidth不起作用

来自分类Dev

反应式编程如何做决策

来自分类Dev

如何在Vue 3的Composition API中的反应式嵌套对象上使用.value?

来自分类Dev

使用反应式编程和JPA存储库在db中持久化对象

来自分类Dev

如何在Shiny中为反应式数据帧分配行名?

来自分类Dev

如何从反应式WebClient响应中获取数据

来自分类Dev

如何在Spring Boot RSocket反应式中处理入站流取消

来自分类Dev

Flash反应式编程吗?

来自分类Dev

RxJS反应式编程

来自分类Dev

如何在Shiny中包含带有反应式MathJax元素的html代码?

来自分类Dev

使用RxScala进行反应式编程

来自分类Dev

如何在调用代码输入和基于计时器的输入之间进行交替以及如何使用反应式编程对其进行单元测试

来自分类Dev

如何进行顺序和条件反应式编程?

来自分类Dev

在Android反应式编程中,如何在应用过滤器后拆分流对象数据?

来自分类Dev

如何在反应式编程中实现热流

来自分类Dev

反应式编程 - 在集群中运行作业

来自分类Dev

如何在 Angular 中做恢复反应式语句?

Related 相关文章

  1. 1

    在函数式反应式编程中,如何在应用程序的两个部分之间共享状态?

  2. 2

    如何在反应式扩展中实现并行扇出处理?

  3. 3

    术语:功能反应式编程/ RX中的“故障”是什么?

  4. 4

    RxJS反应式编程

  5. 5

    HashMaps与反应式编程

  6. 6

    如何在R / Shiny中建立反应式数据框?

  7. 7

    如何在Java中对改装的反应式请求进行反抖动?

  8. 8

    如何在空格键{{if}}中获取HTML,以使用Session变量进行反应式更改?

  9. 9

    什么是反应式编程中的“可观察”?

  10. 10

    如何在调用代码输入和基于计时器的输入之间进行交替以及如何使用反应式编程对其进行单元测试

  11. 11

    在功能反应式编程中忽略/取消/中断流?

  12. 12

    如何在反应式Android中打印控制台日志?

  13. 13

    如何在Vue.js中设置反应式窗口参数 window.innerWidth不起作用

  14. 14

    反应式编程如何做决策

  15. 15

    如何在Vue 3的Composition API中的反应式嵌套对象上使用.value?

  16. 16

    使用反应式编程和JPA存储库在db中持久化对象

  17. 17

    如何在Shiny中为反应式数据帧分配行名?

  18. 18

    如何从反应式WebClient响应中获取数据

  19. 19

    如何在Spring Boot RSocket反应式中处理入站流取消

  20. 20

    Flash反应式编程吗?

  21. 21

    RxJS反应式编程

  22. 22

    如何在Shiny中包含带有反应式MathJax元素的html代码?

  23. 23

    使用RxScala进行反应式编程

  24. 24

    如何在调用代码输入和基于计时器的输入之间进行交替以及如何使用反应式编程对其进行单元测试

  25. 25

    如何进行顺序和条件反应式编程?

  26. 26

    在Android反应式编程中,如何在应用过滤器后拆分流对象数据?

  27. 27

    如何在反应式编程中实现热流

  28. 28

    反应式编程 - 在集群中运行作业

  29. 29

    如何在 Angular 中做恢复反应式语句?

热门标签

归档