Pourquoi l'opérateur RxJava 1.x flatMap() est implémenté avec la fusion?Pourquoi flatMap est implémenté avec fusion dans RxJava?
public final <R> Observable<R> flatMap(Func1<? super T, ? extends Observable<? extends R>> func) {
if (getClass() == ScalarSynchronousObservable.class) {
return ((ScalarSynchronousObservable<T>)this).scalarFlatMap(func);
}
return merge(map(func));
}
De flatMap() appellent je peux retourner une seule Observable conforme à <? extends Observable<? extends R>>
. Than appel de carte (func) l'enveloppe dans un autre Observable, de sorte que nous avons quelque chose comme ceci Observable<? extends Observable<? extends R>>
. Cela me fait penser que l'appel de merge() après map (func) est inutile.
L'opérateur merge() est dit pour effectuer ce qui suit:
aplatit une observable qui émet observables en une seule observable qui émet les articles émis par les observables, sans aucune transformation .
Maintenant à l'intérieur de la carte, nous pouvons seulement avoir un Observable qui émet un Observable. Pourquoi fusionner? Qu'est-ce que j'oublie ici?
Merci.