Was ist los mit meinem "Sum Event" in reactive-banana?

8

Ich lerne reaktiv-Banane und beabsichtige, es in einer serverseitigen App zu verwenden. Ich habe Hintergrundwissen in RxJs, daher bin ich es gewohnt, Events mit verschiedenen Kombinatoren zu kombinieren. Also begann ich mit einfachen Event-Kombinator-Beispielen. Ich habe versucht, ein einfaches reaktives Bananenbeispiel zu erstellen, das zwei ganzzahlige Ereignisse zu einem Summenereignis kombiniert. Ich verstehe, dass ich, um Werte aus verschiedenen Ereignissen kombinieren zu können, sie zuerst zu Verhalten machen muss, die Kombination mache und daraus schließlich ein neues Ereignis mache. So habe ich es gemacht:

%Vor%

Vollständig ausführbares Beispiel finden Sie in Gist 1594917 .

Das Problem hier ist, dass das sumeE-Ereignis korrekt ausgelöst wird, wenn ein neuer Wert in einem der Ereignisse (e1, e2) erscheint, es enthält einen veralteten Wert. Dies liegt offenbar daran, wie der Stepper funktioniert (der Wert des Verhaltens ändert sich "geringfügig nach" dem Auftreten des Ereignisses). Ich habe versucht, Behaviour with Discrete mit dem gleichen Ergebnis zu ersetzen.

Gibt es einen einfachen Weg, um diese Art von Event-Kombinator richtig funktionieren zu lassen?

    
raimohanska 11.01.2012, 21:33
quelle

1 Antwort

6

Ihre Diagnose ist genau richtig. Hier sind zwei Optionen: Sie können auf ein Ereignis von Discrete über changes zurückgreifen oder Sie können kumulative Ereignisse erstellen.

Zurück von Diskrete ist wahrscheinlich einfacher (und das ist, was ich empfehlen würde). Mach einfach

%Vor%

Jetzt wird sumE immer aktualisiert, wenn e1 oder e2 sich ändert.

Die Alternative verwendet nur Ereignisse, indem eingehende Ereignisse in akkumulierende Funktionen umgewandelt werden. Es klingt komplex, aber der Code ist ziemlich einfach.

%Vor%     
John L 12.01.2012, 11:19
quelle

Tags und Links