Wie kann ich Observable in RxJS vervollständigen?

8

Nehmen wir an, wir haben ein Observable :

%Vor%

Wie kann ich Abgeschlossen festlegen (was löst das Ereignis onComplete für alle abonnierten Beobachter aus)?

    
ulfryk 04.12.2015, 20:47
quelle

3 Antworten

13

In dieser Form können Sie nicht. Ihr Observable ist von einer Quelle abgeleitet, die nicht vollständig ist, so dass sie nicht selbst abgeschlossen werden kann. Was Sie tun können, ist diese Quelle mit einer vollständigen Bedingung zu erweitern. Dies würde wie funktionieren:

%Vor%

Wenn Sie observable beenden möchten, tun Sie end$.onNext("anything you want here"); . Das ist der Fall, wenn das Ende-Ereignis von Ihnen generiert wird. Wenn dies eine andere Quelle ist, die dieses Ereignis erzeugt (Tastendruck usw.), können Sie direkt ein Observable, das von dieser Quelle abgeleitet wurde, als Argument von takeUntil verwenden.

Dokumentation:

user3743222 04.12.2015, 21:00
quelle
1

Was für mich funktioniert hat, ist die take () Betreiber. Es wird den vollständigen Rückruf nach x Anzahl der Ereignisse auslösen. Wenn Sie also 1 übergeben, wird es nach dem ersten Ereignis abgeschlossen.

Typescript:

%Vor%     
Tomas Klingen 15.09.2016 12:21
quelle
1

Ich denke, was Sie suchen, ist die Methode dispose() .

aus: Ссылка

  

Beachten Sie, dass die subscribe-Methode ein Disposable zurückgibt, so dass Sie sich von einer Sequenz abmelden und sie einfach entsorgen können. Wenn Sie die Dispose-Methode für die beobachtbare Sequenz aufrufen, hört der Beobachter auf, die Observable für Daten zu hören. Normalerweise müssen Sie nicht explizit abstoßen, es sei denn, Sie müssen sich vorzeitig abmelden, oder wenn die beobachtbare Sequenz der Quelle eine längere Lebensdauer hat als der Beobachter. Abonnements in Rx sind für Fire-and-Forget-Szenarien ohne die Verwendung eines Finalizers ausgelegt. Beachten Sie, dass das Standardverhalten der Observable-Operatoren darin besteht, die Subskription so schnell wie möglich zu entfernen (d. H. Wenn onCompleted- oder onError-Nachrichten veröffentlicht werden). Zum Beispiel wird der Code x für beide Sequenzen a und b subskribieren. Wenn a einen Fehler auslöst, wird x sofort von b abgemeldet.

    
Aiko Mastboom 22.08.2017 08:24
quelle