是否有相当于RxJava的Single的Subject?

时间:2018-02-01 23:57:49

标签: rx-java reactive-programming rx-java2

在RxJava中,是否存在适用于Subject的{​​{1}}类的任何内容?据推测,我会调用其SingleonSuccess( item )方法,输出将转发到onError( Throwable )

我想我可以使用SingleSubscriber Observable并将其转换为Subject,但这看起来有点笨重。

目前使用RxJava 1但对RxJava 2的情况也很感兴趣。

1 个答案:

答案 0 :(得分:7)

在RxJava 2中,您可以使用SingleSubject,如下所示:

SingleSubject<Integer> subject1 = SingleSubject.create();

TestObserver<Integer> to1 = subject1.test();

// SingleSubjects are empty by default
to1.assertEmpty();

subject1.onSuccess(1);

// onSuccess is a terminal event with SingleSubjects
// TestObserver converts onSuccess into onNext + onComplete
to1.assertResult(1);

TestObserver<Integer> to2 = subject1.test();

// late Observers receive the terminal signal (onSuccess) too
to2.assertResult(1);

不幸的是,RxJava 1中没有可用的等价物。但是,正如您所提到的,您可以通过调用subject.toSingle()来获得所需的结果。