C'est une question parfaitement valable et n'aurait pas dû être fermée. Bien que rx soit une excellente bibliothèque, la documentation et les exemples sont malheureusement extrêmement pauvres et déroutants.
RunLoop
Réponses:
248
Observableest le bloc de construction générique ReactiveX, de la source d'événements qui émet des valeurs au fil du temps. (et existe donc dans toutes les langues auxquelles ReactiveX a été étendu)
en bref Les événements observables sont:
onNext * (onCompleted | onError)? / (* zéro ou plus? - zéro ou 1)
Singleet Completablesont de nouveaux types introduits exclusivement chez RxJava qui représentent des types réduits de Observable, qui ont une API plus concise.
Singlereprésentent Observablequi émettent une valeur ou une erreur unique.
Completablereprésentent Observablequi n'émet aucune valeur, mais uniquement des événements terminaux, soit onErrorouonCompleted
Vous pouvez penser aux différences comme aux différences d'une méthode qui renvoie:
Collection d'objets - Observable
Objet unique - Unique
et méthode qui ne renvoie aucune valeur (méthode void) - Complétable.
Singlepeut être approprié lorsque vous avez Observable orienté tâche et que vous attendez une valeur unique, comme une requête réseau qui est effectuée une fois et une valeur renvoyée (ou une erreur), l'appel réseau est exécuté en une seule fois, ce qui signifie que vous ne vous attendez pas à ce qu'il renvoie des valeurs supplémentaires heures supplémentaires. Un autre exemple est l'opération de récupération de données DB.
Completableest approprié lorsque vous avez un Observableet que vous ne vous souciez pas de la valeur résultant de l'opération, ou qu'il n'y en a pas. Les exemples sont la mise à jour d'un cache par exemple, l'opération peut réussir / échouer, mais il n'y a aucune valeur.
Un autre exemple est une opération d'initialisation de longue durée qui ne renvoie rien. Il peut s'agir d'un appel réseau UPDATE / PUT qui n'a abouti qu'à une indication de succès.
Dans tous les cas, Completable et Single n'ajoutent pas de nouvelles fonctionnalités mais introduisent des API plus robustes et concises, qui en disent plus sur les opérations derrière l'Observable que l'API a exposées.
Éditer:
RxJava2 Maybe:
RxJava2 a ajouté un nouveau type appelé Maybe, Maybeest la combinaison de Completableet Single.
Dans le même langage que ci-dessus, Maybepeut être considéré comme une méthode qui retourne un
Optionalcertain type, Optionalest un wrapper autour de Object qui indique explicitement si nous avons une valeur dedans - Objectou non (au lieu de null).
Avec Maybenous pouvons soit avoir une valeur exactement comme, Singlesoit ne rien renvoyer - tout comme Completable. De plus, comme les deux, nous avons l'erreur. Maybeest utile lorsque nous voulons marquer qu'un Observablepeut ne pas avoir de valeur et se terminera simplement.
Un exemple serait extrait du cache, nous n'aurons pas nécessairement une valeur dans le cache, donc dans ce cas, nous allons compléter, comment nous obtiendrons onNextla valeur du cache.
Cela vaut également la peine de gérer des valeurs non nulles dans un flux avec RxJava2.
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'elles ne peuvent être traitées. Flowablea un support de contre-pression permettant en aval de demander des articles. Vous pouvez en savoir plus sur les différences ici .
Réponses:
Observable
est le bloc de construction générique ReactiveX, de la source d'événements qui émet des valeurs au fil du temps. (et existe donc dans toutes les langues auxquelles ReactiveX a été étendu)en bref Les événements observables sont:
onNext * (onCompleted | onError)? / (* zéro ou plus? - zéro ou 1)
Single
etCompletable
sont de nouveaux types introduits exclusivement chez RxJava qui représentent des types réduits deObservable
, qui ont une API plus concise.Single
représententObservable
qui émettent une valeur ou une erreur unique.Completable
représententObservable
qui n'émet aucune valeur, mais uniquement des événements terminaux, soitonError
ouonCompleted
Vous pouvez penser aux différences comme aux différences d'une méthode qui renvoie:
Collection d'objets - Observable
Objet unique - Unique
et méthode qui ne renvoie aucune valeur (méthode void) - Complétable.
Single
peut être approprié lorsque vous avez Observable orienté tâche et que vous attendez une valeur unique, comme une requête réseau qui est effectuée une fois et une valeur renvoyée (ou une erreur), l'appel réseau est exécuté en une seule fois, ce qui signifie que vous ne vous attendez pas à ce qu'il renvoie des valeurs supplémentaires heures supplémentaires. Un autre exemple est l'opération de récupération de données DB.Completable
est approprié lorsque vous avez unObservable
et que vous ne vous souciez pas de la valeur résultant de l'opération, ou qu'il n'y en a pas. Les exemples sont la mise à jour d'un cache par exemple, l'opération peut réussir / échouer, mais il n'y a aucune valeur.Un autre exemple est une opération d'initialisation de longue durée qui ne renvoie rien. Il peut s'agir d'un appel réseau UPDATE / PUT qui n'a abouti qu'à une indication de succès.
Dans tous les cas, Completable et Single n'ajoutent pas de nouvelles fonctionnalités mais introduisent des API plus robustes et concises, qui en disent plus sur les opérations derrière l'Observable que l'API a exposées.
Éditer:
RxJava2
Maybe
:RxJava2 a ajouté un nouveau type appelé
Maybe
,Maybe
est la combinaison deCompletable
et Single.Dans le même langage que ci-dessus,
Maybe
peut être considéré comme une méthode qui retourne unOptional
certain type,Optional
est un wrapper autour de Object qui indique explicitement si nous avons une valeur dedans -Object
ou non (au lieu de null).Avec
Maybe
nous pouvons soit avoir une valeur exactement comme,Single
soit ne rien renvoyer - tout commeCompletable
. De plus, comme les deux, nous avons l'erreur.Maybe
est utile lorsque nous voulons marquer qu'unObservable
peut ne pas avoir de valeur et se terminera simplement.Un exemple serait extrait du cache, nous n'aurons pas nécessairement une valeur dans le cache, donc dans ce cas, nous allons compléter, comment nous obtiendrons
onNext
la valeur du cache.Cela vaut également la peine de gérer des valeurs non nulles dans un flux avec RxJava2.
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'elles ne peuvent être traitées.
Flowable
a un support de contre-pression permettant en aval de demander des articles. Vous pouvez en savoir plus sur les différences ici .la source
Maybe<T>
-ce essentiellementSingle<T?>
?Single
comme unCompletable
avec une valeur retournée?Une réponse concise que j'ai trouvée ici dans la section RXJava.
la source