创建onNext调用的有序序列



是否有一种习惯的反应式方法来完成以下操作:

obs.subscribe((e) -> {
  obs.onNext("BAR");
})
obs.onNext("FOO");

也就是说:call obs。onNext,当它完成时,调用obs。

首先,Observable的工作方式不同。它可以发射任意数量的事件(传递给SubscriberonNext)和只有一个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();

相关内容

  • 没有找到相关文章

最新更新