Quelle est la différence entre Observable, Completable et Single dans RxJava

Quelqu’un peut-il s’il vous plaît expliquer la différence entre Observable, Completable et Single dans RxJava avec des exemples clairs?

Dans quel scénario nous utilisons l’un sur les autres?

    Observable est le bloc de construction générique ReactiveX, de la source d’événement qui émet des valeurs au fil du temps. (et existe donc dans tous les langages de ReactiveX)
    en bref les événements observables sont:
    onNext * (onCompleted | onError)? / (* zéro ou plus? – zéro ou 1)

    Single et Completable sont de nouveaux types introduits exclusivement à RxJava, qui représentent des types d’ Observable réduits, dotés d’une API plus concise.

    Single représente Observable qui émet une valeur unique ou une erreur.

    Completable représente Observable qui n’émet aucune valeur, mais uniquement des événements terminaux, onError ou onCompleted

    Vous pouvez penser aux différences comme les différences d’une méthode qui renvoie:

    • Collection d’objects – Observable

    • Objet unique – Single

    • et méthode qui ne renvoie aucune valeur (méthode void) – Completable.

    Single peut être approprié lorsque vous avez une tâche orientable Observable et que vous attendez une valeur unique, comme une requête réseau qui est effectuée une seule fois et une valeur de retour (ou une erreur), l’appel réseau est exécuté en une seule fois. valeurs au fil du temps. Un autre exemple est l’opération Data Fetch Data.

    Completable est approprié lorsque vous avez un Observable 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 mettent à jour un cache par exemple, l’opération peut réussir ou échouer, mais il n’y a aucune valeur.
    Un autre exemple est une opération d’initialisation longue qui ne renvoie rien. Il peut s’agir d’un appel réseau UPDATE / PUT ayant uniquement donné une indication de réussite.

    Dans tous les cas, Completable et Single n’ajoutent pas de nouvelles fonctionnalités, mais ils 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.

    Modifier:

    RxJava2 MaybeMaybe :

    RxJava2 a ajouté un nouveau type appelé Maybe , Maybe est la combinaison de Completable et Single.

    Dans le même langage que ci-dessus, Maybe peut être considéré comme une méthode Optional un type quelconque de Optional , Optional est un wrapper autour de Object qui indique explicitement si nous avons une valeur – Object ou non (au lieu de null).
    Avec Maybe nous pouvons avoir une valeur exactement comme Single ou ne rien retourner – comme Completable . De plus, comme les deux, nous avons l’erreur.
    MaybeMaybe est-il utile quand nous voulons marquer qu’un Observable peut ne pas avoir de valeur et qu’il ne fera que terminer.
    Un exemple serait extrait du cache, nous n’aurions pas nécessairement une valeur dans le cache, donc dans ce cas, nous allons terminer, donc nous allons obtenir onNext avec la valeur du cache.
    Cela vaut également la peine de gérer des valeurs non nulles dans un stream avec RxJava2.

    RxJava2 Flowable:

    Tout d’abord, définissons la contre-pression. La contre-pression est un moyen de gérer la situation dans laquelle 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 à l’aval de demander des éléments. Vous pouvez en savoir plus sur les différences ici .

    1. Flowable and Observable peut représenter des stream finis ou infinis. Support dorsal fluide .
    2. Single sont des stream avec un seul élément.
    3. Peutêtre sont des stream avec 0 ou un élément.
    4. Enfin, un Completable représente un stream sans éléments, c.-à-d. Qu’il ne peut être complet sans valeur ni échec.

    Une réponse concise que j’ai trouvée ici sur la section RXJava.