Как добавить список наблюдаемых в observable.zip в rxjava2 - PullRequest
0 голосов
/ 09 мая 2018

Мне нужно загрузить несколько файлов, каждый из которых рассматривается как наблюдаемый, пытаясь использовать zip для загрузки всего и возвращать значение только после завершения всей загрузки

1 Ответ

0 голосов
/ 09 мая 2018

Вы можете достичь этого следующим образом:

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();
...