mherod
1/30/2018 - 5:29 PM

FlatMapExample.java

import rx.Observable;
import rx.schedulers.Schedulers;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class FlatMapExample {

    public static void main(String[] args) {

        List<Integer> integers = Arrays.asList(4, 1, 2, 3);

        final List<Integer> flatMapIntegers = Observable.from(integers)
                .observeOn(Schedulers.immediate())
                .subscribeOn(Schedulers.immediate())
                .flatMap(integer ->
                        Observable.timer(integer, TimeUnit.SECONDS)
                                .flatMap(a -> Observable.just(integer)))
                .test()
                .awaitTerminalEvent()
                .getOnNextEvents();

        System.out.println("(" + integers + ").flatMap()." + flatMapIntegers);

        final List<Integer> concatIntegers = Observable.from(integers)
                .observeOn(Schedulers.immediate())
                .subscribeOn(Schedulers.immediate())
                .concatMap(integer ->
                        Observable.timer(integer, TimeUnit.SECONDS)
                                .flatMap(a -> Observable.just(integer)))
                .test()
                .awaitTerminalEvent()
                .getOnNextEvents();

        System.out.println("(" + integers + ").concatMap()." + concatIntegers);
    }
}