Was sind Beispiele für heiße und kalte Signale in ReactiveCocoa?

8

In dieser Antwort Wie wird RACSignal heiß? , @erikprice erklärt heißes und kaltes Signal

  

Ein "heißes Signal" ist ein Signal, das Werte sendet (und vermutlich auch   Arbeit) unabhängig davon, ob es Abonnenten hat. Ein "kaltes Signal" ist   ein Signal, das seine Arbeit und das Senden von irgendwelchen Werten bis dahin verschiebt   hat einen Abonnenten. Und ein kaltes Signal wird seine Arbeit ausführen und senden   Werte für jeden Abonnenten.

Ich frage, ob jemand Beispiele für heiße und kalte Signale zeigen kann, damit es klarer wird

    
onmyway133 31.03.2015, 17:29
quelle

2 Antworten

9
  

Ein Hot-Signal wird als ein Signal betrachtet, das unabhängig davon, ob es Teilnehmer hat, Werte sendet

Ich verwende ein Hot-Signal zur Überwachung der Netzwerkerreichbarkeit. Eine Tastenaktion, die durch RACCommand realisiert wird, ist ein weiteres Beispiel für ein Hot-Signal.

  

Ein "kaltes Signal" ist ein Signal, das seine Arbeit und das Senden irgendwelcher Werte verzögert, bis es einen Teilnehmer hat.

Dies wird sehr gut demonstriert, indem AFNetworking reaktiv gemacht wird. Erstellen Sie eine Methode, die ein Signal zurückgibt, das eine Anforderung darstellt. Wenn Sie dieses Signal abonnieren, wird die Netzwerkanforderung ausgeführt. Der Abonnent wird sendNext: und sendCompleted , wenn die Anfrage erfolgreich ist, und sendError: , wenn die Anfrage fehlschlägt.

    
Eimantas 16.06.2015, 08:11
quelle
7

Ich finde das RAC 3 Changelog auch nützlich

Heiße Signale sind jetzt Signale

  

In der Terminologie von RAC 2 löst ein "heißes" RACSignal keines aus   Nebenwirkungen, wenn eine -Aubscribe ... -Methode aufgerufen wird. In anderen   Wörter, heiße Signale sind vollständig vom Produzenten und Push-basiert, und   Verbraucher (Abonnenten) können keinen Einfluss auf ihre Lebensdauer haben.

     

Dieses Muster ist nützlich, um Beobachter über Ereignisse zu informieren, die dies tun   auftreten, egal was. Zum Beispiel könnte ein loading boolean umkehren   zwischen wahr und falsch, unabhängig davon, ob etwas beobachtet wird.

     

Konkret ist jedes RACSubject eine Art heißes Signal, denn das   Weitergeleitete Ereignisse werden nicht durch die Anzahl der Teilnehmer bestimmt   zu dem Thema.

Kalte Signale sind jetzt Signalproducer

  

In der Terminologie von RAC 2 führt ein "kaltes" RACSignal seine Arbeit aus   Zeit für jedes Abonnement. Mit anderen Worten, kalte Signale führen zur Seite   Effekte, wenn eine -Aubscribe ... -Methode an sie aufgerufen wird und möglicherweise in der Lage ist   laufende Arbeit abbrechen, wenn -dispose auf die zurückgegebene zurückgerufen wird   RACDisposable.

     

Dieses Muster ist allgemein nützlich, weil es unnötige Arbeit minimiert,   und ermöglicht es Operatoren wie Takes, Retry, Concat etc. zu manipulieren wann   Die Arbeit wird gestartet und abgebrochen. Kalte Signale sind auch ähnlich wie   Futures und verspricht Arbeit, und kann für die Strukturierung nützlich sein   asynchroner Code (wie Netzwerkanforderungen).

Ich habe Push vs Pull Signal geschrieben, das im Grunde enthüllt wie Push vs Pull Signal implementiert wird, in Swift 2

    
onmyway133 24.09.2015 15:59
quelle

Tags und Links