2016-02-06 25 views
9

Zgodnie z RxJS 5 MIGRATION.md zostało usunięte shareReplay().shareReplay w RxJS 5

  1. Dlaczego?
  2. Czy .publishReplay(1).refCount() wiernie odtwarza zachowanie? Zasadniczo muszę odtworzyć pojedynczy najnowszy zestaw danych dla nowych subskrybentów.

Odpowiedz

8

Krótka odpowiedź: Cytując sir Blesh:

problem RxJS 5 stara się rozwiązać to, że ConnectableObservables powinno być "do przełączania" i refCount powinien powrócić do zaobserwowania że jest zimno, aż zasubskrybowane, a następnie gorące, dopóki wszystkie subskrypcje nie zostaną zakończone, a następnie ponownie zimne.

Kwestia polega na zachowaniu się obiektów po zakończeniu, co uniemożliwia podłączenie możliwego do zaobserwowania ponownego połączenia po zakończeniu.

Długa odpowiedź: https://github.com/ReactiveX/RxJS/issues/453

Obecny API wydaje się być wynikiem kompromisu między dwoma wizjami emisji włączeniem. Byłoby wspaniale, gdyby osoby zaangażowane mogły dokonać podsumowania omawianych problemów. Rozumiem, że .publishReplay(1).refCount() powinien zachować stare zachowanie, to znaczy, gdy liczba subskrybentów osiągnie 0, źródło jest odłączone i nie można go odtworzyć. Ale nie wierz mi na słowo, sprawdź, zgubiłem się po dyskusji.