Que sont les observables chaud et froid?

j'ai regardé la vidéo et je connais les principes généraux - la chaleur arrive même quand personne n'est abonné, le froid arrive "sur demande". De plus, Publish() convertit cold en hot et Defer() convertit hot en cold.

mais quand même, je sens que je manque les détails. Voici quelques questions auxquelles j'aimerais avoir répondu:

  • Pouvez-vous donner une définition complète de ces termes?
  • at-il jamais est-ce logique d'appeler publier sur un observable chaud ou reporter sur un rhume?
  • Quels sont les aspects des conversions Chaud/Froid - perdez-vous des messages, par exemple?
  • y a-t-il des différences entre les définitions du chaud et du froid pour IObservable et IEnumerable?
  • Quels sont les principes généraux dont vous devez tenir compte lorsque vous programmez pour le froid ou le chaud?
  • D'autres conseils sur les observables chaud/froid?
35
demandé sur Matthew Murdoch 2010-03-26 08:20:26

4 réponses

j'espère que cela aidera.

pouvez-vous donner un la définition de ces termes?

Voir mon billet de blog à: http://leecampbell.blogspot.com/2010/08/rx-part-7-hot-and-cold-observables.html

Ne jamais faire sens de l'appeler Publier une chaude observables ou Reporter sur une froide?

non, pas que je puisse penser.

Quels sont les aspects de chaud / froid conversions - vous perdez des messages, par exemple?

il est possible de" perdre "des messages lorsque L'Observable est chaud, comme" événements " se produisent indépendamment des abonnés.

y a-t-il des différences entre chaud et définitions à froid pour Io-observable et IEnumerable?

je n'ai pas vraiment comprenez la question. J'espère que cette analogie permet cependant. Je comparerais une chaleur Observable à une chaleur évaluée avec impatience. c'est-à-dire qu'une liste ou un tableau sont tous les deux évalués avec enthousiasme et ont été peuplés même si personne n'en émérite au-dessus d'eux. Une instruction de rendement qui obtient des valeurs à partir d'un fichier ou d'une base de données pourrait être évaluée avec le mot-clé de rendement. Tandis que lazy peut être bon, il sera par défaut, être réévalué si un deuxième recenseur court dessus. Si l'on compare ces valeurs à celles D'Observables, on constate qu'une il peut s'agir d'un événement (clic sur le bouton) ou d'un flux de températures; ces événements se produiront indépendamment d'un abonnement et seront également partagés si plusieurs abonnements sont effectués à la même Observatoire. Observable.L'intervalle est un bon exemple d'un Froid observables. Elle ne commencera à produire des valeurs qu'au moment de l'abonnement. Si plusieurs souscriptions sont effectuées, la séquence sera réévaluée et les "événements" se produiront à des moments distincts (selon le temps entre les souscriptions).

Quels sont les principes généraux dont vous devez tenir compte lorsque vous programmez pour le froid ou le chaud?

renvoie au lien du point un. Je vous recommande également de vérifier si Publsh est utilisé en conjonction avec RefCount. Cela vous permet d'avoir la capacité D'avoir la sémantique D'évaluation paresseuse des Observables froids mais le partage des événements que les Observables chauds obtiennent.

tous autres conseils sur chaud/froid observables?

se salir les mains et jouer avec eux. Une fois que vous les avez lus pendant plus de 30minutes, le temps passé à les coder est beaucoup plus productif pour vous que de les lire plus:)

27
répondu Lee Campbell 2013-03-31 18:05:12

hot observables sont ceux qui poussent même si vous n'êtes pas abonné à l'observable. Comme des mouvements de souris, ou des tics temporels ou quelque chose comme ça. Les observables du froid sont ceux qui commencent à pousser seulement lorsque vous vous abonnez, et ils recommencent si vous vous abonnez à nouveau.

17
répondu Richard Hein 2010-03-31 00:09:03

sans prétendre donner une réponse complète, j'aimerais résumer sous une forme simple ce que j'ai appris depuis le temps de cette question.

à Chaud " observables est une correspondance exacte pour l'événement. Dans les événements, les valeurs sont généralement introduites dans le gestionnaire même si aucun abonné n'écoute. Tous les abonnés reçoivent le même ensemble de valeurs. En raison de suivre le modèle "événement", observables à chaud sont plus facile à comprendre que les froides.

Cold observable est aussi comme un événement, mais avec un événement observable twist - Cold n'est pas une propriété sur une instance partagée, c'est une propriété sur un objet qui est produit à partir d'une usine chaque fois que quelqu'un souscrit. En outre, l'abonnement commence la production des valeurs. En raison de ce qui précède, plusieurs abonnés sont isolés et chacun reçoit son propre ensemble de valeurs.

L'erreur la plus courante que font les débutants de RX est de créer un observable à froid (bien, en pensant qu'ils créent un observable à froid) en utilisant certaines variables d'état dans une fonction (F. E. total cumulé) et ne pas l'emballer dans A.Reporter (). Par conséquent, plusieurs abonnés partagent ces variables et causent des effets secondaires entre eux.

9
répondu Sergey Aldoukhov 2012-04-22 20:02:27

Observables

du point de vue conceptuel, observable est simplement une couverture autour d'une source de données ou d'événements, fournissant une interface commode pour traiter la source comme un flux de données qui met à jour ses valeurs en temps réel.

"151900920 À Froid" Observables

dans la version dite "froide", la source n'est pas active et peut être comparée à des plans, des classes ou des prototypes. Par conséquent, l'observable ne produit pas quoi. Comme un ruisseau en attente ou suspendu. Cela en fait une valeur pure que vous pouvez passer en toute sécurité à une fonction pure. Un bon exemple est un compteur suspendu qui commence toujours par 1 lorsqu'il est activé.

"s'Abonner" à un "froid observables" vraiment signifie deux choses: la Création (ou de la fourche) un actif flux de données d'instance et fixation de l'abonné. La première partie est similaire à la création d'objets à partir d'une classe. La deuxième partie est le abonnement et par lui-même, a rien à voir avec la première partie. En dépit d'être "emballé" comme un seul "abonnement", qui, à mon avis, ne fait qu'ajouter à la confusion.

Observable À Chaud

le soi-disant" observable à chaud " est déjà une instance en cours d'exécution. Comme un objet créé à partir du prototype et prêt à l'emploi. Et l'abonnement implique évidemment seulement l'observateur effectif attachant. Aucune activation n'est nécessaire.

-1
répondu Dmitri Zaitsev 2017-05-26 15:18:29