Alexandr
Alexandr

Reputation: 1901

RxJava: Combining Observables with ignoring emitting from one of

I have observables Observable<Integer> observable1 and PublishSubject<String> observable2 (see sample).

My purpose:

  1. Observables parallel execution;
  2. Error handling in one observer;
  3. Don't care what 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

Answers (1)

krp
krp

Reputation: 2247

See ignoreElements operator http://reactivex.io/documentation/operators/ignoreelements.html .

Upvotes: 2

Related Questions