Reputation: 1901
I have observables Observable<Integer> observable1
and PublishSubject<String> observable2
(see sample).
My purpose:
observable1
will emit onNext, is important only to errors handling onError and guarantee that the observable is executed.I need something like
observable2.mergeWith(observable1.map(i -> Integer.toString(i)))
.subscribe(mySubsriber);
But without emitting from observable1
.
There is nice way to do it?
Sample
long time1 = 7000;
long time2 = 1000;
Observable<Integer> observable1 = Observable.create(new Observable.OnSubscribe<Integer>() {
@Override
public void call(Subscriber<? super Integer> subscriber) {
Handler handler = new Handler();
handler.postDelayed(() -> {
subscriber.onNext(1);
subscriber.onNext(2);
subscriber.onNext(3);
subscriber.onCompleted();
}, time1);
}
}).doOnNext(new Action1<Integer>() {
@Override
public void call(Integer data) {
cacheData(data);
}
});
PublishSubject<String> observable2 = PublishSubject.create();
Handler handler = new Handler();
handler.postDelayed(() -> {
observable2.onNext("A");
observable2.onNext("B");
observable2.onNext("C");
observable2.onCompleted();
}, time2);
Observer<String> observer = new Observer<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
//need handling errors from observable1 and observable2
}
@Override
public void onNext(String s) {
//need emitting only from observable2
}
};
Upvotes: 0
Views: 384
Reputation: 2247
See ignoreElements operator http://reactivex.io/documentation/operators/ignoreelements.html .
Upvotes: 2