RxJava - цикл через асинхронные задачи и ожидание завершения

Я пытаюсь выполнить некоторую асинхронную работу с n элементами и дождаться завершения всех элементов, прежде чем продолжить.

Что я должен указать в whatfunc? местоположении, чтобы подписка onComplete срабатывала один раз?

Observable.range(0, n)
    .<whatfunc?>({ s ->  doAsyncWorkThatReturnsObservable(s) })
    .(other?)
    .subscribe({println "All complete"})

Спасибо


person fionbio    schedule 13.04.2014    source источник


Ответы (1)


flatMap

Обязательно предоставьте закрытие для правильных аргументов в подписке. Пример из ссылки, скорректированной в соответствии с предоставленным вами примером:

Observable.range(0, n)
    .flatMap({n -> doAsyncWorkThatReturnsObservable(n)})
    .subscribe(
       { println(it); },                          // onNext
       { println("Error: " + it.getMessage()); }, // onError
       { println("Sequence complete"); }          // onCompleted
    );
person fionbio    schedule 13.04.2014