Domanda

I visto il video e so che i principi generali - accade caldo anche quando nessuno è sottoscritto, a freddo avviene "on demand". Inoltre, Pubblica () converte freddo al caldo e Defer () converte caldo a freddo.

Ma ancora, mi sento che mi manca i dettagli. Qui ci sono alcune domande che mi piacerebbe avere una risposta:

  • Si può dare una definizione completa per questi termini?
  • Ha sempre senso di chiamare Pubblica su un osservabile calda o Rimanda in una fredda?
  • Quali sono gli aspetti di Hot / conversioni freddo - si fa a perdere i messaggi, ad esempio
  • ?
  • non ci sono differenze tra le definizioni caldi e freddi per IObservable e IEnumerable?
  • Quali sono i principi generali si dovrebbe prendere in considerazione durante la programmazione per il freddo o caldo?
  • Eventuali altri suggerimenti su osservabili caldo / freddo?
È stato utile?

Soluzione

Spero che questo aiuta.

  

Si può dare una vasta      definizione per questi termini?

Si veda il mio post del blog all'indirizzo: http://leecampbell.blogspot.com/2010/08/rx-part-7-hot-and-cold-observables.html

  

Ha mai senso per chiamare      Pubblicare su un osservabile calda o Defer      in un freddo?

No, non è che mi viene in mente.

  

Quali sono gli aspetti di caldo / freddo      conversioni - si perde messaggi,      per esempio?

E 'possibile "perdere" i messaggi quando l'osservabile è caldo, come "eventi" accadono indipendentemente abbonati.

  

Ci sono differenze tra caldo e      definizioni freddi per IObservable e      IEnumerable?

Non capisco davvero la questione. Spero che questa analogia aiuta però. Vorrei confrontare un Observable calda a un oggetto IEnumerable Ardentemente valutata. cioè un elenco o una matrice sono entrambi Ardentemente valutate e sono state popolate, anche se nessuno enuemerates su di loro. Una dichiarazione resa che ottiene i valori da un file o un database potrebbe essere valutata pigramente con la parola chiave rendimento. Mentre pigro può essere buona, sarà di default, essere rivalutato se un secondo enumeratore scorre su di essa. Confrontando questi per osservabili, un osservabile caldo potrebbe essere un evento (pulsante di scatto) o di un feed di temperature; questi eventi accadranno indipendentemente un abbonamento e sarebbe anche condivisa se sono stati fatti per la stessa observale più abbonamenti. Observable.Interval è un buon esempio di un osservabile freddo. Si inizierà solo la produzione di valori quando una sottoscrizione è fatto. Se più abbonamenti resa allora la sequenza verranno rivalutati e gli "eventi" si verificherà in tempi separati (a seconda del tempo tra abbonamenti).

  

Quali sono i principi generali si dovrebbe prendere in considerazione durante la programmazione per il freddo o caldo?

Fare riferimento al link di cui al punto uno. Io consiglio anche di guardare in Publsh essere utilizzato in combinazione con RefCount. Questo permette di avere la possibilità di avere la semantica di valutazione pigro di osservabili freddo, ma la condivisione di eventi che Hot osservabili GET.

  

Eventuali altri suggerimenti su come caldo / freddo      osservabili?

sporcarsi le mani e avere un gioco con loro. Dopo aver letto su di loro per più di 30 minuti, quindi il tempo trascorso codifica con loro è molto più produttivo per voi di leggere più:)

Altri suggerimenti

osservabili caldi sono quelli che stanno spingendo anche quando non sei iscritto al osservabile. Come si muove il mouse, o timer zecche o qualcosa di simile. osservabili freddi sono quelli che iniziare a spingere solo quando si è abbonati, e ricominciare di nuovo se si è abbonati.

Non fingendo di dare una risposta esauriente, vorrei riassumere in una forma più semplice quello che ho imparato fin dai tempi di questa domanda.

Hot osservabile è una corrispondenza esatta per l'evento. Negli eventi, i valori di solito sono alimentati nel gestore, anche se non gli abbonati sono in ascolto. Tutti gli abbonati stanno ricevendo lo stesso insieme di valori. A causa della seguendo il modello "evento", osservabili caldi sono più facile da capire di quelli freddi.

freddo osservabile è come anche un evento, ma con un tocco - evento di osservabile a freddo non è una proprietà su un'istanza condivisa, si tratta di una proprietà su un oggetto che viene prodotto da una fabbrica ogni momento in cui qualcuno si abbona. Inoltre, l'abbonamento inizia la produzione di valori. A causa di quanto sopra, più sottoscrittori sono isolati e ciascuno riceve il proprio insieme di valori.

L'errore più comune principianti RX fare è la creazione di un raffreddore osservabile (beh, pensando che stanno creando un osservabile freddo) utilizzando alcune variabili di stato all'interno di una funzione (f.e. totale accumulato) e non avvolgendolo in una dichiarazione di .Defer (). Di conseguenza, più sottoscrittori condividono queste variabili e causare effetti collaterali tra di loro.

Osservabile

Concettualmente, osservabile è semplicemente un wrapper per un po 'di dati o di eventi di origine, fornendo alcune comoda interfaccia per trattare la fonte come flusso di dati che aggiorna i suoi valori in tempo reale.

Freddo Osservabile

Nella versione "a freddo", la fonte non è attivo e può essere paragonato a blueprint, classi o prototipi. Da qui l'osservabile non produce nulla. Come un corso d'acqua in attesa o sospesi. Questo lo rende un valore puro che è possibile passare in modo sicuro ad una pura funzione. Un buon esempio è un contatore sospesa che inizia sempre con 1 quando attivato.

"Iscrizione" ad un "freddo osservabile" significa due cose: creare (o che si biforcano) un'istanza flusso di dati attiva e fissano l'abbonato. La prima parte è simile alla creazione di oggetti da una classe. La seconda parte è la sottoscrizione reale e per sé, non ha nulla a che fare con la prima parte.

Hot Osservabile

Il "caldo osservabile" è già un caso che è in esecuzione. Come un oggetto creato dal prototipo e pronto per l'uso. E sottoscrizione coinvolge solo l'allegando osservatore reale. Non è necessaria alcuna parte di attivazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top