2016-10-20 1 views
5

Wenn ich mehrere Teilnehmer zu einer beobachtbaren, zum Beispiel haben:Rxjs wissen, wie viele Abonnenten beobachtbar sind?

const myInterval = Rx.Observable.interval(500); 

const subscriptionOne = myInterval.subscribe(val => doSomething()); 
const subscriptionTwo = myInterval.subscribe(val => doSomething()); 

Wie kann ich wissen, wie viele Abonnenten registrieren noch auf die myInterval beobachtbar? Ich brauche diese Informationen zum Beispiel zu verhindern Speicherlecks für den Fall, dass ich vergessen habe, von einem von ihnen abzubestellen?

Antwort

1

Wenn Sie angular 2 verwenden, sollten Sie versuchen, die asynchrone Pipe so oft wie möglich zu verwenden, da dies automatisch für Sie abbestellt wird, wenn Ihre Komponente zerstört wird.

Das gesagt. Ihr hier beobachtbares Intervall ist kalt beobachtbar. Das heißt, für jedes Abonnement wird der Erzeuger von Werten eingerichtet. Dies bedeutet, dass jedes Mal ein neues Abonnement erstellt wird. Wenn Sie also wissen, wie viele Abonnements Sie noch haben, können Sie eine Frage nicht beantworten.

Ich fürchte, das Einzige, was Sie tun können, ist die Verwaltung Ihrer Abonnements auf eine saubere Weise und verlassen Sie sich auf Winkel so weit wie möglich dafür.

+0

Und zum Beispiel, wenn ich in meiner Komponente die ValueChanges.subscribe in Formularen verwenden? Ich muss mich manuell abmelden? –

Verwandte Themen