Sobes.tech
Junior

Jakie znasz sposoby pracy z kodem asynchronicznym?

sobes.tech AI

Odpowiedź od AI

Wywołania zwrotne, Obietnice, async/await.

Wywołania zwrotne: Funkcje przekazywane jako argumenty do innych funkcji, wywoływane po zakończeniu operacji asynchronicznej.

Obietnice: Obiekty zapewniające wygodniejszy sposób zarządzania asynchronicznością w porównaniu do wywołań zwrotnych. Mają stany pending, fulfilled i rejected.

// Przykład Obietnicy
function asyncOperation() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Operacja zakończona sukcesem!');
    }, 1000);
  });
}

asyncOperation()
  .then(result => console.log(result))
  .catch(error => console.error(error));

async/await: Słodzik składniowy nad Obietnicami, który sprawia, że kod asynchroniczny jest bardziej podobny do synchronicznego i poprawia czytelność.

// Przykład async/await
async function performAsyncOperation() {
  try {
    const result = await asyncOperation();
    console.log(result);
  } catch (error) {
    console.error(error);
  }
}

performAsyncOperation();

Porównanie metod:

Metoda Czytelność / Utrzymanie Obsługa błędów Kontrola przepływu
Wywołania zwrotne Mniej czytelne (Callback Hell) Trudne Trudne
Obietnice Ulepszone Wygodne (.catch) Wygodne (.then, .catch)
async/await Lepsze Wygodne (try...catch) Wygodne (await)

Najbardziej preferowaną metodą w nowoczesnych aplikacjach Node.js jest użycie async/await ze względu na czytelność i wygodę. Obietnice pozostają ważnym narzędziem, szczególnie na niższym poziomie implementacji. Wywołania zwrotne są używane w przestarzałym kodzie lub do operacji niskiego poziomu w jądrze Node.js.