Einzel vs Observable in Java RX

8

In der neuen Version führte reactiveX Single als eine Variante von Observable ein Ссылка

Das ist nett zu haben, da ich in meinem aktuellen Anwendungsfall mehrere Ausführungen habe und jeder von ihnen nur ein einziges Ergebnis liefert. Es wird also Sinn machen, wenn ich von Observable zu Single wechseln werde.

Aber dann, als Teil meines Anwendungsfalls, muss ich diese multiple Ausführung oben in einen Observable-Stream einfügen (um Ergebnisse von allen obigen Ausführungen zu erhalten).

Nun, meine Frage ist, was ist besser in Bezug auf die Leistung?

  1. Verwenden von Observable für jede Ausführung, obwohl ich weiß, dass die Ausführung nur 1 Ergebnis zurückgibt.

oder

  1. Verwenden Sie die Single für jede Ausführung und konvertieren Sie sie nur in Observable, wenn ich die Streams später konzentieren muss?

Danke.

    
Xitrum 30.03.2016, 16:08
quelle

3 Antworten

2

Wenn ich Ihre Situation vollständig verstehe, würde es aus meiner Kenntnis sinnvoll sein, wenn die Singles mit den oben erwähnten Multi-Execution-Aussagen umgehen und diese Singles mit einem Observablen kombinieren.

Ich kann keine großartige Dokumentation finden, um dies aus Performance-Gründen zu tun, aber ich kann logisch erklären, warum es besser ist, eine Single zu verwenden, wenn es möglich ist (obwohl Sie in die Unkräuter geraten, wenn es zu umfangreichem Refactoring kommt) .

Antwort: Betrachten Sie eine Situation, in der wir ein Observable verwenden, das Ihrem Fall ähnlich ist (wir wissen, dass es nur einen einzelnen Wert zurückgibt). Bei einem Single haben wir die Logik, nach der Ausgabe eines Werts sofort zur OnSuccess-Methode zu wechseln, während wir in Observables sicherstellen müssen, dass es sich um den letzten handelt, und dann OnComplete aufrufen.

Vielleicht kann ein anderer Entwickler eingreifen, aber die Logik dahinter scheint Sinn zu ergeben.

    
Chad Van De Hey 19.01.2017 19:33
quelle
1

Es gibt Fälle, in denen es angemessen ist, dass das Observable einen einzelnen Wert (oder Fehler) zurückgibt und dann endet. Es gibt eine großartige Erklärung dafür: Ссылка

    
Solidak 08.04.2017 10:19
quelle
1

Single soll verwendet werden, wenn Sie eine Einzelwertantwort erwarten.
Observable auf der anderen Seite ist für einen Stream oder Vektorwerte verwendet werden.
In Bezug auf das Reactive Pattern ist es also ausreichend, Single zu verwenden, falls Sie das einzige Ergebnis erwarten.

    
Leo Droidcoder 23.05.2017 15:02
quelle

Tags und Links