RxJava a récemment introduit Single . Existe-t-il un moyen de convertir un observable déjà existant (qui est à peu près un single) en un single sans modifier la source de l'observable d'origine?
Par exemple, j'ai une classe de service api avec une méthode qui renvoie un observable - qui consiste essentiellement à récupérer un utilisateur à partir d'une ressource distante. Disons que je ne peux pas modifier le service. Je veux consommer cela ailleurs mais retourner un single. Comment puis-je faire cela?
Un peu plus de fond
RxJava a récemment introduit le concept d'un Single qui est plus ou moins un simple rappel convivial Rx (c'est-à-dire un observable émettant un objet ou une erreur) (en savoir plus ici - http://reactivex.io/documentation/ single.html )
Je pense qu'une autre réponse est dépassée. Vous devriez probablement vérifier les méthodes suivantes.
singleOrError: Emet le seul et unique élément, IndexOutOfBoundsException si la source est supérieure à 1 élément ou NoSuchElementException si la source est vide.
firstOrError: Emet le premier élément ou une NoSuchElementException si la source est vide.
lastOrError: Emet le dernier élément ou une NoSuchElementException si la source est vide.
elementAtOrError: Émet l'élément indexth ou une NoSuchElementException.
Plus d'informations sur cette page: https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.
2 nouvelles méthodes pratiques ont été ajoutées pour accomplir cette tâche.
toSingle()
convertit un observable qui émet un seul élément en un unique qui émet cet élément
toObservable
convertit un Single en Observable qui émet l'élément émis par le Single puis termine
Dans rxjava2 vous pouvez utiliser Single.fromObservable()
.