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.