RxJava:创建onNext Calls的有序序列

时间:2016-10-13 13:49:14

标签: java rx-java

是否有反应性的惯用方法来执行以下操作:

cat /sys/test/list.txt | cut -d "=" -f2 | awk '{print $1}'| sed 's/"//g'

也就是说:调用obs.onNext,当它完成时,再次使用新的事件对象调用obs.onNext。

1 个答案:

答案 0 :(得分:1)

首先,Observable工作不同。它可以发出任意数量的事件(传递给Subscriber&#39} 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();