Janart94
Janart94

Reputation: 1

How to add List of Observable to observable.zip in rxjava2

I need to download Multiple file consider each as observable, trying to use zip to download all and return value only when entire download complete

Upvotes: 0

Views: 312

Answers (1)

Dmitry
Dmitry

Reputation: 2526

You can achieve it like this:

List<Observable<String>> downloads = new ArrayList<>();

//delay operator is to simulate a long-running operation
downloads.add(Observable.fromCallable(() -> "download 1").delay(1, TimeUnit.SECONDS));
downloads.add(Observable.fromCallable(() -> "download 2").delay(2, TimeUnit.SECONDS));
downloads.add(Observable.fromCallable(() -> "download 3").delay(5, TimeUnit.SECONDS));
downloads.add(Observable.fromCallable(() -> "download 4").delay(3, TimeUnit.SECONDS));

Observable.fromIterable(downloads)
        .flatMap(stringObservable -> stringObservable)
        .toList()
        .doOnSuccess(completedDownloads -> {
            for (String completedDownload : completedDownloads) {
                System.out.println("completed: " + completedDownload);
            }
        })
        .subscribe();

Upvotes: 1

Related Questions