Jaka jest praktyczna różnica między observable.publish().refCount()
i observable.share()
. Co byłoby przykładem sytuacji, w której nie chcemy używać share
?Różnica między `share()` i `publish(). RefCount()`
Odpowiedz
Nie ma praktyczna różnica, jeśli spojrzeć na „observable.prototype.share” widać, że po prostu zwraca „source.publish(). RefCount()”.
Co do dlaczego nie chcesz go używać, to jest bardziej kwestia ile kontroli trzeba się gdy źródło rozpocznie nadawanie.
Po tym, jak refCount()
połączy podstawową obserwowalną przy pierwszej subskrypcji, może się zdarzyć, że kolejni obserwatorzy przegapią wiadomości przychodzące, zanim będą mogły zasubskrybować.
Na przykład:
var source = Rx.Observable.range(0, 5).share();
var sub1 = source.subscribe(x => console.log("Observer 1: " + x));
var sub2 = source.subscribe(x => console.log("Observer 2: " + x));
Tylko pierwszy abonent otrzyma żadnych wartości, jeśli chcemy zarówno otrzymać je będziemy używać:
var source = Rx.Observable.range(0, 5).publish();
var sub1 = source.subscribe(x => console.log("Observer 1: " + x));
var sub2 = source.subscribe(x => console.log("Observer 2: " + x));
source.connect();
z rxjs 5 jest różnica między tymi dwoma zastosowań operatora. Zobacz [ten problem] (https://github.com/ReactiveX/RxJS/issues/1363) Opublikowałem na repozytorium rxjs 5, aby uzyskać szczegółowe wyjaśnienie różnic. – Christian
Urgh, tak, pamiętam, że to czytałem. Chyba będę musiał edytować. – paulpdaniels
@Christian Jestem obecnie z problemem w aplikacji Angular2. Mam 'obserwowalne' z żądania http z wieloma' obserwatorami'. Narzędzia programistyczne w mojej przeglądarce rejestrują około 750 żądań dotyczących zadania. Kiedy zmienić 'udział()' na 'publish.refCount()' istnieją tylko 50 wnioski wyjechał do tego samego zadania. Wydaje się więc, że 'share()' nie robi tego, co powinno (podziel się 'Observable'). – Springrbua
- 1. Share Array między lua i C
- 2. Różnica między iso_level3_shift i zatrzaskiem
- 3. różnica między ./test.pl i Perl test.pl
- 4. Różnica między unwrapObservable i()
- 5. Różnica między "**/* /" i "** /"?
- 6. Różnica między | = i^= css
- 7. Composer.phar różnica między | i ||
- 8. Różnica między "% ~ dp0" i ". \"?
- 9. Różnica między ". +" I ". +?"
- 10. MySQL: Różnica między ",", "i"
- 11. Różnica między (++ i) oraz (i ++)
- 12. Różnica kręgosłupa Różnica między CompositeView i CollectionView?
- 13. Różnica między intencjami na Twitterze i adresami URL Twittera
- 14. Różnica między logger.info i logger.debug
- 15. Różnica między fgets i fscanf?
- 16. Różnica między NSLog i DLog
- 17. Różnica między RoutedEventHandler i EventHandler
- 18. Różnica między obrysem i wypełnieniem?
- 19. Różnica między Parameters.Add i Parameters.AddWithValue
- 20. Różnica między putback() i unget()
- 21. Różnica między Delegate.BeginInvoke i Thread.Start
- 22. Różnica między TVar i TMVar
- 23. Różnica między DatagramSocket i DatagramChannel
- 24. Różnica między intent.setClass() i intent.setComponent()
- 25. różnica między -lgcc_s i gcc
- 26. Różnica między string.ToLower i TextInfo.ToLower
- 27. Różnica między javax.sql i java.sql?
- 28. Różnica między paint() i paintcomponent()?
- 29. Różnica między app.all ("*") i app.use ("/")
- 30. Różnica między c() i append()
[tag: System.Reactive] jest. Tag sieci. – i3arnon