Junior
Jakie znasz sposoby pracy z kodem asynchronicznym?
sobes.tech AI
Odpowiedź od AI
- Funkcje zwrotne (Callback): Przekazywanie funkcji jako argumentu do innej funkcji, która zostanie wywołana po zakończeniu operacji asynchronicznej. Mogą prowadzić do "callback hell".
- Obiekty Promise: Reprezentują ostateczne zakończenie (lub niepowodzenie) operacji asynchronicznej i jej wynikową wartość. Zapewniają bardziej strukturalne zarządzanie asynchronicnością.
// Przykład użycia promisa fetch('/api/data') .then(response => response.json()) // Obsługa udanej odpowiedzi .then(data => console.log(data)) // Obsługa otrzymanych danych .catch(error => console.error('Błąd podczas pobierania danych:', error)); // Obsługa błędu - Async/await: Słodzik składniowy nad promesami, pozwalający pisać kod asynchroniczny w bardziej synchronicznym stylu, co czyni go bardziej czytelnym i łatwiejszym do debugowania.
// Przykład użycia async/await async function fetchData() { try { const response = await fetch('/api/data'); // Oczekiwanie na promisa if (!response.ok) { throw new Error(`Błąd HTTP! status: ${response.status}`); } const data = await response.json(); // Oczekiwanie na promisa console.log(data); } catch (error) { console.error('Błąd podczas pobierania danych:', error); // Obsługa błędu } } fetchData(); - Generatory (Generators): Mogą być używane do pracy z asynchronicznością w połączeniu z biblioteką
colub ręcznie, choćasync/awaitstało się bardziej powszechne.
Porównanie głównych podejść:
| Metoda | Zalety | Wady |
|---|---|---|
| Callbacks | Proste na początku | "Callback hell", złożoność obsługi błędów |
| Promises | Lepsza czytelność, obsługa błędów | Mogą być nieczytelne w łańcuchach operacji |
| Async/await | Wysoka czytelność, podobieństwo do kodu synchronicznego | Wymaga wsparcia środowiska dla async/await |