Moduł 12 – Asynchroniczność
Moduł kursu o numerze 12 nosi nazwę "Asynchroniczność" i jest jednym z najważniejszych tematów, który zostanie omówiony.
W tej części kursu dowiesz się, jak pobierać dane z serwera oraz jak radzić sobie z asynchronicznym wykonywaniem kodu w języku JavaScript. Będziemy również analizować zdarzenia związane z komunikacją z serwerem i jak odpowiednio zareagować na odpowiedzi serwera.
Wcześniej skupialiśmy się wyłącznie na pracy z kodem i danymi, które sami wcześniej napisaliśmy lub reagowaliśmy na działania użytkownika naszej aplikacji. W tym rozdziale dowiemy się, jak pobierać dane z serwerów, przetwarzać je i wyświetlać, a także jak postępować, gdy nie uda się pobrać danych. Poznamy również standardy komunikacji z serwerem, takie jak REST.
📚 Zawartość modułu
Moduł "Asynchroniczność" jest podzielony na 93 lekcji:
- Kolejność wykonywania kodu – przypomnienie: Przypomnienie o kolejności, w jakiej wykonywany jest kod w języku JavaScript.
- setTimeout: Wykorzystanie funkcji setTimeout do opóźnienia wykonywania kodu.
- Event loop: Poznanie zasady działania pętli zdarzeń (event loop) w przeglądarkach.
- Callbacki w praktyce: Zastosowanie callbacków w praktyce przy obsłudze asynchronicznych operacji.
- Koncepcja obietnic w JS: Zapoznanie się z koncepcją obietnic (promises) i ich roli w asynchronicznym kodzie.
- new Promise: Tworzenie własnych obietnic przy pomocy konstruktora Promise.
- Zamawiamy piwo: Anegdota przedstawiająca koncepcje promisów przy pomocy zamawiania piwa w barze.
- Callback hell: Omówienie problemu callback hell i sposobów na jego uniknięcie.
- then(): Korzystanie z metody then() do obsługi wyników zakończonych obietnic.
- catch(): Obsługa błędów przy użyciu metody catch() dla obietnic.
- Chaining – łańcuchowanie: Łączenie wielu operacji asynchronicznych.
- Microtasks and Macrotasks: Różnica między microtasks a macrotasks w kontekście kolejności wykonywania kodu.
- Fetch: Wykorzystanie funkcji fetch do pobierania danych z serwera.
- Custom fetch: Implementacja własnej funkcji fetch dla lepszej kontroli nad zapytaniami sieciowymi.
- Aplikacja ładująca dane: Tworzenie aplikacji, która pobiera i wyświetla dane z serwera.
- Aplikacja ToDo ładująca dane: Rozbudowa aplikacji ToDo o funkcję pobierania danych z serwera.
- Aplikacja ToDo ładująca dane - część 2: Kontynuacja rozbudowy aplikacji ToDo o funkcję pobierania danych z serwera.
- Aplikacja przeładowująca użytkowników: Implementacja funkcjonalności wyświetlania i przeładowywania użytkowników w nowej aplikacji.
- Filtrowanie użytkowników: Dodanie możliwości filtrowania użytkowników w aplikacji.
- Podstawy HTTP: Omówienie podstawowych pojęć związanych z protokołem HTTP.
- HTTP - status codes & headers: Poznanie różnych kodów statusu i nagłówków HTTP oraz ich znaczenia.
- HTTP - REST API & CRUD: Zrozumienie REST API i operacji CRUD (Create, Read, Update, Delete) w kontekście HTTP.
- HTTP - Postman - instalacja: Instrukcja instalacji narzędzia Postman do testowania i debugowania interfejsów HTTP.
- Open Weather Map API: Wykorzystanie Open Weather Map API do pobierania informacji o prognozie pogody.
- Aplikacja pogodowa - część 1: Tworzenie aplikacji pogodowej, która korzysta z Open Weather Map API.
- Konfiguracja webpacka przez create-react-app: Konfiguracja środowiska developerskiego z użyciem narzędzia create-react-app.
- Aplikacja pogodowa - część 2: Kontynuacja rozbudowy aplikacji pogodowej o nowe funkcje.
- Aplikacja pogodowa - część 3: Dalsze ulepszanie aplikacji pogodowej, dodawanie animacji i stylizacji.
- Debounce: Zastosowanie debouncingu do lepszej obsługi zdarzeń asynchronicznych.
- Aplikacja pogodowa - część 4: Rozbudowa aplikacji pogodowej o funkcję wyszukiwania i filtrowania danych.
- Aplikacja pogodowa - część 5: Finalizacja aplikacji pogodowej, optymalizacja i testowanie.
- Firebase – wprowadzenie: Wprowadzenie do platformy Firebase i jej możliwości.
- Firebase – REST API - PUT: Wykorzystanie metody PUT w REST API Firebase do aktualizacji danych.
- Firebase – REST API - POST: Dodawanie nowych danych za pomocą metody POST w REST API Firebase.
- Firebase – REST API - PATCH: Aktualizacja wybranych pól danych przy użyciu metody PATCH w REST API Firebase.
- Firebase – REST API - DELETE: Usuwanie danych z bazy przy użyciu metody DELETE w REST API Firebase.
- Firebase – REST API - GET & filtrowanie: Pobieranie danych z bazy Firebase i filtrowanie ich zgodnie z określonymi kryteriami.
- Counter z bazą danych 1: Implementacja licznika z wykorzystaniem bazy danych w Firebase.
- Counter z bazą danych 2: Kontynuacja rozbudowy licznika z wykorzystaniem bazy danych w Firebase.
- Własny "Postman" część 1 – Textarea: Tworzenie własnej aplikacji podobnej do Postman z wykorzystaniem elementu textarea.
- Własny "Postman" część 2 – App state: Implementacja stanu aplikacji w aplikacji typu "Postman".
- Własny "Postman" część 3 – Select: Dodanie elementu Select do aplikacji "Postman" dla wyboru typu żądania.
- Własny "Postman" część 4 – Input & Button: Dodanie pól Input i przycisku do aplikacji "Postman" w celu wprowadzania danych.
- Własny "Postman" część 5 – Wysyłanie żądań: Implementacja funkcji wysyłania żądań w aplikacji "Postman".
- Własny "Postman" część 6 – Dopracowanie aplikacji "Postman".
- ToDo lista z bazą danych: Tworzenie aplikacji ToDo listy z wykorzystaniem bazy danych.
- ToDo lista z bazą danych – część 2: Kontynuacja rozbudowy aplikacji ToDo listy z bazą danych.
- ToDo lista z bazą danych – część 3: Dalsza rozbudowa aplikacji ToDo listy z bazą danych.
- ToDo lista CRUD – część 1: Wprowadzenie do operacji CRUD (Create, Read, Update, Delete) w aplikacji ToDo listy.
- ToDo lista CRUD – część 2 - READ: Implementacja operacji odczytu (READ) w aplikacji ToDo listy.
- ToDo lista CRUD – część 3 - CREATE: Implementacja operacji tworzenia (CREATE) w aplikacji ToDo listy.
- ToDo lista CRUD – część 4 - UPDATE: Implementacja operacji aktualizacji (UPDATE) w aplikacji ToDo listy.
- ToDo lista CRUD – część 5 - DELETE: Implementacja operacji usuwania (DELETE) w aplikacji ToDo listy.
- ToDo lista CRUD – część 6: Rozbudowywanie aplikacji ToDo listy z operacjami CRUD.
- Jak działa autoryzacja w sieci – anegdota: Przykładowa anegdota ilustrująca działanie mechanizmu autoryzacji w sieci.
- Jak działa autoryzacja w sieci – diagram: Przedstawienie diagramu, który obrazuje działanie autoryzacji w sieci.
- Jak wygląda JWT: Omówienie struktury i wyglądu tokena JWT (JSON Web Token).
- Konfiguracja autentykacji w Firebase: Instrukcja konfiguracji mechanizmu autentykacji w Firebase.
- Konfiguracja autoryzacji w Firebase: Omówienie procesu konfiguracji mechanizmu autoryzacji w Firebase.
- Rejestracja przez REST API: Implementacja funkcjonalności rejestracji użytkownika przez REST API.
- Logowanie przez REST API: Implementacja funkcjonalności logowania użytkownika przez REST API.
- Dostęp do autoryzowanego zasobu przez REST API: Przedstawienie sposobu uzyskiwania dostępu do autoryzowanego zasobu przy użyciu REST API.
- Logowanie w JS: Przykład implementacji funkcjonalności logowania użytkownika w języku JavaScript.
- Rejestracja w JS: Przykład implementacji funkcjonalności rejestracji użytkownika w języku JavaScript.
- Dekodowanie tokenu JWT: Przykład dekodowania tokenu JWT w celu uzyskania informacji o użytkowniku.
- Pobieranie danych użytkownika: Przykład implementacji funkcjonalności pobierania danych użytkownika z bazy danych.
- Zmiana danych użytkownika: Przykład implementacji funkcjonalności zmiany danych użytkownika w bazie danych.
- Zmiana hasła: Przykład implementacji funkcjonalności zmiany hasła użytkownika w bazie danych.
- Usuwanie użytkownika: Przykład implementacji funkcjonalności usuwania użytkownika z bazy danych.
- Autoryzowane zapytania w JS: Przykład implementacji autoryzowanych zapytań do serwera w języku JavaScript.
- Zapisywanie tokenów w localStorage: Przedstawienie sposobu zapisywania tokenów autoryzacyjnych w pamięci przeglądarki za pomocą localStorage.
- Sprawdzanie stanu zalogowania użytkownika: Implementacja funkcjonalności sprawdzania stanu zalogowania użytkownika w aplikacji.
- Wylogowywanie: Przykład implementacji funkcjonalności wylogowywania użytkownika z aplikacji.
- Odświeżanie tokenów podczas wykonywania zapytań: Przedstawienie sposobu odświeżania tokenów autoryzacyjnych podczas wykonywania zapytań do serwera.
- Wylogowywanie gdy serwer zwróci 401: Implementacja automatycznego wylogowywania użytkownika w przypadku otrzymania odpowiedzi 401 od serwera.
- Zmienne środowiskowe: Omówienie używania zmiennych środowiskowych w aplikacjach webowych.
- Komponent Auth cz.1: Tworzenie komponentu odpowiedzialnego za funkcje autoryzacyjne — część 1.
- Komponent Auth cz. 2: Tworzenie komponentu odpowiedzialnego za funkcje autoryzacyjne — część 2.
- Komponent Auth cz. 3: Tworzenie komponentu odpowiedzialnego za funkcje autoryzacyjne — część 3.
- Komponent Auth cz 4: Tworzenie komponentu odpowiedzialnego za funkcje autoryzacyjne — część 4.
- Komponent logowania: Implementacja komponentu logowania w aplikacji.
- Komponent rejestracji: Implementacja komponentu rejestracji w aplikacji.
- ToDo lista z autoryzacją cz. 1: Rozszerzanie aplikacji ToDo listy o funkcje autoryzacji — część 1.
- ToDo lista z autoryzacją cz. 2: Rozszerzanie aplikacji ToDo listy o funkcje autoryzacji — część 2.
- Ustawianie reguł autoryzacji w Firebase: Omówienie procesu konfiguracji reguł autoryzacji w Firebase.
- Promise.all(): Wykorzystanie funkcji Promise.all() do równoczesnego wykonywania wielu obietnic.
- Promise.all() - rejection: Obsługa odrzucenia obietnic w funkcji Promise.all().
- Promise.all() - własna implementacja: Implementacja własnej funkcji Promise.all().
- Promise.allSettled(): Wykorzystanie funkcji Promise.allSettled() do obsługi wielu obietnic niezależnie od ich stanu.
- Promise.race(): Wykorzystanie funkcji Promise.race() do obsługi wielu obietnic i zwrócenie wartości najwcześniej zakończonej.
- Promise.any(): Wykorzystanie funkcji Promise.any() do obsługi wielu obietnic i zwrócenie wartości pierwszej zakończonej sukcesem.
- async await: Wykorzystanie składni async/await do obsługi asynchronicznych operacji.
- Async await catching errors: Obsługa błędów przy użyciu składni async/await.
👀 Zobacz przykładową lekcję z tego modułu kursu:
💸 Kup kurs
Kup cały kurs CodeRoad – TUTAJ
Kup ten moduł kursu – TUTAJ