Quelqu'un peut-il expliquer la différence entre Observable, Completable et Single dans RxJava avec des exemples clairs?
Dans quel scénario on utilise l'un sur les autres?
Quelqu'un peut-il expliquer la différence entre Observable, Completable et Single dans RxJava avec des exemples clairs?
Dans quel scénario on utilise l'un sur les autres?
Observable
est le générique ReactiveX bloc de construction, de la source de l'événement qui émet des valeurs dans le temps. (et donc existe dans toutes les langues ReactiveX étendu à d')
en bref événements Observables sont:
onNext* (onCompleted | onError)? /(* zéro ou plus ? - zéro ou 1)
Single
et Completable
sont de nouveaux types introduites exclusivement à RxJava qui représentent réduit types d' Observable
, qui ont plus concise de l'API.
Single
représentent Observable
qui émettent de la valeur unique ou d'erreur.
Completable
représentent Observable
qui n'émet pas de valeur, mais seulement terminal événements, onError
ou onCompleted
Vous pouvez considérer les différences comme les différences d'une méthode qui retourne:
Collection d'Objets Observables
Objet unique - Unique
et la méthode qui ne retourne pas de valeurs (méthode void) - Complétées.
Single
peut être approprié lorsque vous avez une tâche orientée Observables et vous vous attendez à valeur unique, comme la demande de Réseau qui est effectuée une fois et la valeur de retour (ou une erreur), à l'appel du réseau est exploité dans un mode du temps, ce qui signifie que vous ne vous attendez pas à retourner des valeurs supplémentaires au fil du temps. Un autre exemple est DB extraire des données à l'opération.
Completable
est appropriée que lorsque vous avez un Observable
et vous n'avez pas de soins sur la valeur résulte de l'opération, ou il n'est pas tout.
Des exemples sont mise à jour d'un cache par exemple, l'opération peut réussissent/échec, mais il n'y a pas de valeur.
Un autre exemple est une longue course init opération qui ne retourne rien. Elle peut être mise à JOUR/MISES réseau d'appel qui a abouti avec succès indicatif.
En tout cas, Complétées et Unique ne sont pas en ajoutant de nouvelles fonctionnalités, mais ils sont en train d'introduire plus robuste et concis Api, qui en dit plus sur les opérations derrière les Observables que l'API exposées.
Edit:
Maybe
:RxJava2 ajout d'un nouveau type appelé Maybe
, Maybe
est la combinaison de l' Completable
et Unique.
Dans la même langue, comme ci-dessus, Maybe
peut être considéré comme une méthode qui retourne
Optional
, Optional
est un wrapper autour de l'Objet qui indique explicitement que nous avons une certaine valeur en elle - Object
ou pas (au lieu de null).
Avec Maybe
on peut soit avoir une certaine valeur exactement comme Single
ou renvoyer rien - juste comme Completable
. En outre, comme les deux, nous avons l'erreur.Maybe
est utile lorsque l'on veut marquer qu'un Observable
peut ne pas avoir de valeur, et s'il suffit de compléter.
Un exemple pourrait être récupérée à partir de la mémoire cache, nous allons nous ont pas nécessairement une valeur dans le cache, donc dans ce cas, nous permettra de compléter, de l'o.w. nous aurons, onNext
de la valeur de la cache.
C'est également digne de gérer les valeurs non null dans un ruisseau avec RxJava2.
Flowable
:Tout d'abord, définissons la contre-pression. La contre-pression est un moyen de gérer la situation où les données sont générées plus rapidement qu'il peut être traité. Flowable
a contre-pression permettant, en aval, à des éléments de demande. Vous pouvez lire plus sur les différences ici.
Un concis réponse que j'ai trouvé ici sur RXJava section.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.