创建主题

Create a Subject

我在 RxJS 中看到过这个,但我还没有在 RxJava 中找到等效项。有谁知道如何在 java 中设置这样的东西吗?

RxJS Subject.create(observer, observable)

Creates a subject from the specified observer and observable.

Arguments

observer (Observer): The observer used to send messages to the subject.

observable (Observable): The observable used to subscribe to messages sent from the subject.

基本上这将是一个主题,您可以通过它向另一个观察者发送数据,并有一个可观察的对象将数据发送回主题订阅者。

我正在尝试在 RxJava 中复制 this github issue post 中看到的代码。

主题也可以在 RxJava 中创建。您可以通过每种类型的工厂方法来创建它们。例如,如果你想创建一个 AsyncSubject,你可以使用:

Subject<String> subject = AsyncSubject.<String>create();

有关支持的不同类型的主题,请参阅此文档:Subject subject = AsyncSubject.create();如果你想 return 它给用户,你当然可以将它向下转换为 Observable,这样用户就不知道它实际上是一个 Subject。

参考您的链接问题,您可以使用主题上的 on* 方法将数据输入其中,然后观察者就可以使用它。

在 RxJava 中,我认为最接近的方法是订阅 Observable,将 Subject 作为观察者传递。

final Observable<Integer> observable = Observable.just(1, 2, 3, 4, 5);
final AsyncSubject<Integer> subject = AsyncSubject.create();
observable.subscribe(subject);
subject.subscribe(new Action1<Integer>() {
    @Override
    public void call(Integer integer) {
        // TODO
    }
});