是否有一种习惯的反应式方法来完成以下操作:
obs.subscribe((e) -> {
obs.onNext("BAR");
})
obs.onNext("FOO");
也就是说:call obs。onNext,当它完成时,调用obs。
首先,Observable
的工作方式不同。它可以发射任意数量的事件(传递给Subscriber
的onNext
)和只有一个onCompleted
事件。一旦它发送onCompleted, Observable
结束,因此不能再发出任何事件。
Observable
:
Observable.create((subscriber) -> {
if (!subscriber.isUnsubscribed()) {
return;
}
subscriber.onNext("FOO");
subscriber.onNext("BAR");
subscriber.onCompleted();
});
在这种情况下,一旦订阅,发出两个事件并完成它的工作。
如果你想动态添加事件到Observable
,我建议PublishSubject
。例子:
PublishSubject<String> publishSubject = PublishSubject.create();
publishSubject.subscribe(o -> {
//Do whatever you want with o of type String
});
publishSubject.onNext("FOO");
publishSubject.onNext("BAR");
publishSubject.onCompleted();