Я использую RxJava, в котором хочу динамически создавать несколько Observables на основе некоторого условия. Как только я закончил создание, я хочу сделать некоторую обработку на разных значениях, возвращаемых наблюдаемыми, а затем отправить как единый Observable, на который я могу подписаться. Вот как мой код:RxJava: динамически создавать Observables и отправлять окончательный результат как Observable
List<String> valueList = ....
List<Observable<String>> listOfObservables = new ArrayList<Observable<String>>();
for(int i =; i <valueList.size(); i++){
listOfObservables.add(new SomeClass.doOperation(valueList(i)));
// SomeClass.doOperation will return an Observable<String>
}
return Observable.merge(listOfObservables);
Но здесь, я хочу сделать некоторые операции по значениям, излучаемых различными наблюдаемыми, в listOfObservable
и, наконец, вернуть его в качестве одного Observable<String>
Как и в Observable.zip()
, я может сделать это как
return Observable.zip(observable1, observable2, (string1, string2) -> {
// joining final string here
return string1 + string2;
Но я знаю количество аргументов здесь. Пожалуйста, дайте мне знать, как я могу это достичь.
Пожалуйста, вы можете объяснить больше? как я могу получить отдельные строки для выполнения операций? – v1shnu
Я добавил пример использования. Имейте в виду, что если вы не заботитесь о порядке, возможно, 'merge', то' reduce' будет проще. –
Спасибо человек. Это отлично работает! – v1shnu