2016-07-01 11 views
0

Ich bin interessant, wie Rx die Subskriptions # abmelden Methode behandelt. Zum Beispiel haben wirLöscht die Abmelde-Methode in Rx nur den letzten Abonnenten oder stoppt die Ereignisbuchung für den gesamten Stream?

Subscription subscription = Observable.from(veryBigList) 
       .map(value -> convertValue(value)) 
       .map(value1 -> saveToDb(value)) 
       // .... maybe more operators 
       .subscribeOn(Schedulers.io()) 
       .subscribe(); 
     // ... 
     subscription.unsubscribe(); 

Gibt es eine Garantie dafür, dass das Abonnement abzubestellen mehr aussendet Ereignisse im ganzen Strom?

+0

Abbestellen hat eine eventuelle Garantie (auch Best-Effort genannt), dass alles in der gesamten Kette abgemeldet wird. Hast du einen Fall gefunden, in dem das nicht passiert? – akarnokd

+0

@akarnokd Nein, habe ich nicht. Ich habe gerade eine interne API gefunden, die darauf beruht, dass das Abmelden aufhören sollte, Ereignisse an den Abonnenten zu senden, die nur den Rest des Stroms am Leben erhalten – Buckstabue

Antwort

0

Kommt drauf an; Wenn Sie einen cache() oder share() haben, wird die Abmeldung dort unterbrochen.