Operator switchMap służy do pobrania danych ze źródła typu Observable.
To, co charakteryzuje switchMap, to możliwość anulowania emisji danych z poprzedniego wywołania. W momencie, gdy nasze źródło wysyła nowe dane poprzednia subskrypcja jest anulowana - pod warunkiem że nie zakończyła się w chwili emisji nowych danych.
W przeciwieństwie do operatora mergeMapswitchMap pozwala na subskrypcję, w danej chwili tylko jednego źródła danych.
Za każdym razem, gdy wyślemy dane z podanego źródła poprzednia emisja, zostanie anulowana.
Jeśli zależy Ci na:
Tylko jednej subskrypcji (w danym momencie) z obiektu typu Observable
Na możliwości anulowania poprzedniej emisji danych
Po kliknięciu przyciskiem myszy w stronę startuje licznik co sekundę, emitując nowe dane (interval$). Drugie kliknięcie powoduje anulowanie poprzedniej subskrypcji i start nowej.
Kliknij drugi raz odpowiednio szybko, zanim przyjdzie odpowiedź z pierwszego żądania — zostanie wysłane nowe zapytanie + anulowane zostanie poprzednie.
Operator mergeMap służy do pobrania danych ze źródła typu Observable przekazanego do tego operatora.
Dane z podanego źródła są wysyłane natychmiast kiedy będą dostępne. To znaczy, że kolejność odbioru danych nie jest gwarantowana. Dodatkowo dane z takiego źródła są pobierane za pomocą mergeMap równocześnie.
Po kliknięci przyciskiem myszy na stronie zostanie wywołany obiekt Observable: interval$, który co sekundę emituje sygnał. Każde kolejne kliknięcie powoduje start emitowania danych z nowego źródła.
Czyli możemy osiągnąć taki wynik: 0, 1, 2 nowe kliknięcie: 3, 0, 4, 1, 5, 2 itd.