Middle
Kodėl buvo įvesta async/await konstrukcija ir kaip ji pagerina darbą su asinchroniniu kodu?
sobes.tech AI
Atsakymas iš AI
Async/await buvo įvestas, siekiant supaprastinti asinchroninio kodo rašymą, padarant jį skaitomesnį ir lengviau prižiūrimą, palyginti su tradiciniais callback'ais ar pažadais.
Kaip jis tobulina:
- Skaitomumas: Kodas su
async/awaitatrodo kaip sinchroninis, eilutė po eilutės, kas žymiai palengvina jo supratimą. - Klaidų tvarkymas: Leidžia naudoti standartines konstrukcijas, tokias kaip try/catch, klaidų tvarkymui asinchroniniame kode, skirtingai nuo
.catch()pažadais. - Derinimas: Pertraukimų taškai (breakpoints) veikia taip pat kaip sinchroniniame kode, palengvindami derinimo procesą.
- Mažiau "callback hell": Pašalina įdėtus callback'us, kurie veda prie neskaitymo kodo.
Pavyzdys:
Pažadų kodas:
// Pavyzdys su pažadais
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Klaida gaunant duomenis:', error);
});
Tas pats kodas su async/await:
// Pavyzdys su 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('Klaida gaunant duomenis:', error);
}
}
fetchData();
async/await konstrukcija yra paremta pažadais ir yra sintaksinis cukrus jais dirbti. Funkcija, pažymėta kaip async, visada grąžina pažadą. Operatorius await gali būti naudojamas tik async funkcijų viduje ir "laukia" pažado išsprendimo, grąžindamas jo išspręstą reikšmę arba išmetant išimtį klaidos atveju.