创建主题
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
}
});
我在 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
}
});