Skip to main content

Observable using defer

Updated 1 min readMarkdown
Part of seriesJava

Observable normally gets created once the code executes, Observable using defer , defers the creation of Observable. It waits till a subscription is done.

Below are main property of Observable using defer.

  1. Creates new observable every time on subscription
  2. No Observable is created until subscription

Below is the code showing Observable using defer

package com.codingsaint.learning.rxjava.observables;

import com.codingsaint.learning.rxjava.observer.DemoObserver;
import com.codingsaint.learning.rxjava.utils.RxUtils;
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ObservableUsingDefer {
    private static final Logger LOGGER = LoggerFactory.getLogger(ObservableUsingDefer.class);

    public static void main(String... args) {
        Observable<Integer> observableUsingDefer = Observable.defer(() -> {
            return Observable.fromIterable(RxUtils.postiveNumbers(5));
        });
        observableUsingDefer.subscribe(new DemoObserver());
        observableUsingDefer.subscribe(new DemoObserver());


    }
}

Here intentionally we are subscribing 2 times to show that each time Observable is created. You can also see that defer is taking fromIterable to create the observable. This will stop creating defer until we subscribe. Once subscribed Observable.fromInterable code will be invoked

35 views

About the author

  • I am a developer who loves Java, Spring, Quarkus, Micronaut, Open source, Microservices, Cloud

No comments yet. Be the first to comment.

More from this blog