3

想要的行为:

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

我的问题是onNextafteronError不起作用(这是有意的,遵循RxJava规则),但我需要对错误有弹性,同时还要将它们传递到流中(向用户显示一些反馈)。

有没有办法做到这一点?

4

2 回答 2

3

如果你想要onError并且onComplete被忽视,那么有RxRelay库。

描述:

主题有助于弥合非 Rx API 之间的差距。然而,它们以一种破坏性的方式是有状态的:当它们收到 onComplete 或 onError 时,它们不再可用于移动数据。这是可观察的契约,有时它是期望的行为。大多数时候不是。

中继只是没有上述属性的主题。它们允许您轻松地将非 Rx API 桥接到 Rx,而不必担心意外触发终端状态。

于 2016-10-04T11:25:12.593 回答
0

尝试在订阅前使用 .onErrorReturn()

于 2016-10-04T11:20:33.357 回答