2016-09-21 2 views
1

Ich habe eine sehr einfache Aufgabe, die ich gerne mit rx erreichen würde und ich bin mir nicht sicher, wie es zu erreichen ist. Betrachten Sie den folgenden Code als Minimalbeispiel.Holen Sie sich die neueste Nachricht von einem IObservable

 var subject = new Subject<int>(); 

     subject.OnNext(1); 
     subject.OnNext(2); 

     Assert.AreEqual(2, subject.__________()); 
     //      > what goes above < 

Das Verfahren sollte nur auf die IObservable Schnittstelle etwas ausgesetzt werden. Es gibt zwei nützliche Kandidaten, die nicht tun, was ich hoffe. Die Latest Methode blockiert bis zur nächsten Nachricht, die nicht das Verhalten ist, nach dem ich suche. Die MostRecent Dokumentation sah sehr vielversprechend aus, konnte aber nicht das liefern, was ich mir erhofft hatte.

+0

Warum versuchen Sie, dies zu tun? – Enigmativity

Antwort

2

Es gibt keine einzige Methode, die es tun wird. Observables benötigen ein Abonnement, das auch die Form eines Operators annehmen kann, um Werte zu propagieren. Sie benötigen dieses Abonnement, wenn das Objekt die Werte ausgibt (oder OnNext s). Es gibt nichts, was die Werte für Sie speichert oder speichert.

Hier ist ein Beispiel ein rohes Abonnement mit:

var subject = new Subject<int>(); 

int last = 0; 

using (subject.Subscribe(i => last = i)) 
{ 
    subject.OnNext(1); 
    subject.OnNext(2); 
} 
Assert.AreEqual(2, last); 
Verwandte Themen