java - 出错后重启 BehaviorSubject

标签 java android rx-java behaviorsubject

通缉行为:

subject = BehaviorSubject.create(1);
subject.subscribe(number -> print(number), error -> print(error));

subject.onNext(2);
subject.onNext(3);
subject.onError(new RuntimeException("I'm an error"));
subject.onNext(4);
subject.onNext(5);

有了这个输出:

1
2
3
I'm an error
4
5

我的问题是 onError 之后的 onNext 不工作(这是有意的,遵循 RxJava 规则),但我会需要对错误有弹性,同时也将错误传递到流中(向用户显示一些反馈)。

有办法吗?

最佳答案

如果您希望忽略 onErroronComplete,可以使用 RxRelay图书馆。

描述:

Subjects are useful to bridge the gap between non-Rx APIs. However, they are stateful in a damaging way: when they receive an onComplete or onError they no longer become usable for moving data. This is the observable contract and sometimes it is the desired behavior. Most times it is not.

Relays are simply Subjects without the aforementioned property. They allow you to bridge non-Rx APIs into Rx easily, and without the worry of accidentally triggering a terminal state.

关于java - 出错后重启 BehaviorSubject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39849600/

相关文章:

java - 尝试在浏览器上打开小程序时出现错误事件

java - 设置一个第三方 JAR 的类路径以包含另一个带有 Ant 的类路径

Android:Google Drive API - 从未调用过 Resultcallback

android - rxjava Realm - 使用 UI 线程以外的其他处理程序线程的灵活性?

android - Observable<Object> 的可变列表等到它们全部完成并将它们组合成一个 List<Object>

java - Eclipse 问题的新类

java - 在 Java 7 源代码级别编译 GWT 2.6.1

跨多个设备的 Android 视频同步

java - 游标 while 循环返回除最后一个值之外的每个值

android - 如何测试它在 rxjava map/flatmap 中的模拟交互