Middle
Prečo bola zavedená konštrukcia async/await a ako zlepšuje prácu s asynchrónnym kódom?
sobes.tech AI
Odpoveď od AI
Async/await bol predstavený na zjednodušenie písania asynchrónneho kódu, čím ho sprístupňuje ako čitateľnejší a ľahšie udržiavateľný v porovnaní s tradičnými callbackmi alebo promises.
Ako to zlepšuje:
- Čitateľnosť: Kód s
async/awaitvyzerá ako synchronný, riadok po riadku, čo výrazne uľahčuje jeho pochopenie. - Spracovanie chýb: Umožňuje používať štandardné konštrukcie ako try/catch na spracovanie chýb v asynchrónnom kóde, na rozdiel od
.catch()v promises. - Ladenie: Breakpoints fungujú rovnako ako v synchronickom kóde, čo uľahčuje ladenie.
- Menej "callback hell": Odstraňuje problém s vnorenými callbackmi, ktoré vedú k nečitateľnému kódu.
Príklad:
Kód s promises:
// Príklad s promises
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Chyba pri načítaní dát:', error);
});
Tento istý kód s async/await:
// Príklad s async/await
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Chyba pri načítaní dát:', error);
}
}
fetchData();
Konstrukcia async/await je založená na promises a je syntaktickým cukrom pre ich prácu. Funkcia označená ako async vždy vracia promise. Operátor await možno použiť iba vo vnútri async funkcií a "čaká" na vyriešenie promise, vracia jej vyriešenú hodnotu alebo vyvoláva výnimku v prípade chyby.