2017-12-21 201 views
8

już wiem, żeKiedy należy używać `publishReplay` vs` shareReplay`?

  • publish akcji jeden abonament, a także zwraca ConnectableObservable (tak musimy Connect())

  • Share() jest publish().refcount()

Replay postfix jest dość oczywiste, że zwraca ostatnią emisję/s.

Weźmy na przykład kątowym żądania http z obecnych i przyszłych subskrypcji:

<p>{{ (person | async)?.id }}</p> //present markup 

<p *ngIf=”show”>{{ (person | async)?.userId }}</p> //future markup 

Jeśli nie chcę wiele http wnioski można używać:

publishReplay().Connect()

ale mogę również użyj: shareReplay(), ale jestem pewien, że jest tutaj jeden, który jest bardziej poprawny w użyciu niż drugi.

Pytanie:

Kiedy należy używać publishReplay vs shareReplay? Jaka będzie różnica w zakresie tego, czy Http prezentuje przyszłe żądanie?

NB Dlaczego nie ma dokumentacji dotyczącej shareReplay?

Odpowiedz

4

publishReplay pozwala kontrolować, kiedy rozpoczyna się subskrypcja. shareReplay uruchomi się automatycznie po pierwszej subskrypcji.

Genaralnie, jeśli obserwowalne ma być używane w szablonie (plik html), należy użyć shareReplay. Zaletą jest, że nie będzie musiał martwić się o wypisywanie itp

+1

Jeśli tak to ja nie rozumiem, jak to się stało RefCount jest '0', ale nadal emituje wartość dla przyszłych subskrypcji, jest to becuase powtórki? http://jsbin.com/nirisugudi/edit?html,js,console –

+0

Co się tyczy Twojego komentarza i szablonu w pytaniu, czy '| async' również automatycznie anuluje subskrypcję? –

+0

Skąd wiadomo, że refcount to '0'? – martin