W pierwszym parametrze informujemy splice, w którym miejscu chcemy dodać nowe elementy. W drugim podajemy 0, ponieważ nie chcemy nic kasować z tablicy. I w końcu w ostatnim parametrze podajemy listę elementów, które chcemy dodać.
splicemodyfikuje tablicę, na której została ta funkcja wywołana.
W wersji dla TypeScript, Jest będzie szukać plików z rozszerzeniem: .spec.ts.
Mamy skonfigurowane środowisko. Czas sprawdzić, czy to działa.
Uruchomienie testów
Konfiguracja w package.json
Dodajmy jeszcze takie wpisy do pliku package.json w sekcji: scripts:
{
"scripts": {
"test": "jest --config ./jest.config.json",
"test:watch": "npm run test -- --watch"
},
}
Pierwszy skrypt uruchomi nam raz testy, bazując na naszym pliku konfiguracyjnym. Drugi skrypt zrobi to samo, ale dodatkowo będzie nasłuchiwać na ewentualne zmiany.
Uruchomienie testu
Stwórz plik z rozszerzeniem: .spec.js lub .spec.ts i dodaj zawartość do pliku:
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.