Я пытаюсь получить список строк из API_1 (getList()
), затем выполнить итерацию по каждой строке в списке и выполнить еще один сетевой вызов API_2 (syncData()
) по каждой строке типа данных, почему-то я не понимаюпочему код ниже может делать вторые вызовы с forEach()
, но не flatMap()
.
flatMap () Версия:
Observable.just(getListNetworkCall())
.flatMapIterable(response -> response.getDataList())
.flatMap(dataType -> syncData(dataType))
.subscribeOn(Schedulers.io())
.subscribe(new Consumer<Response2>() {
@Override
public void accept(Response2 response) throws Throwable {
System.out.println("response:" + response.toString());
}
});
forEach ()Версия:
Observable.just(getList())
.flatMapIterable(response -> response.getDataList())
.forEach(dataType -> syncData(dataType));
private Observable<Response2> syncData(String dataType) {
return Observable.just(syncDataNetworkCall(dataType));
}
Что я видел в flatMap() Version
, так это то, что он выполнял только вызов getList (). Я пропускаю какие-либо знания о RxJava, я также ссылаюсь на Последовательность запросов RxJava Combine
Спасибо.