Middle
Zašto je uvedena konstrukcija async/await i kako ona poboljšava rad sa asinhronim kodom?
sobes.tech АИ
Одговор од АИ
Async/await je uveden da pojednostavi pisanje asinhronog koda, čineći ga čitljivijim i lakšim za održavanje u poređenju sa tradicionalnim callback-ovima ili promise-ima.
Kako poboljšava:
- Čitljivost: Kod sa
async/awaitizgleda kao sinhroni, red po red, što znatno olakšava razumevanje. - Obrada grešaka: Omogućava korišćenje standardnih konstrukcija kao što su try/catch za obradu grešaka u asinhronom kodu, za razliku od
.catch()u promise-ima. - Debagovanje: Tačke prekida (breakpoints) rade isto kao i u sinhronom kodu, olakšavajući proces debagovanja.
- Manje "callback hell": Uklanja problem ugnježdenih callback-ova, što dovodi do nečitljivog koda.
Primer:
Kod sa promise-ima:
// Primer sa promise-ima
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Greška pri dobijanju podataka:', error);
});
Isti kod sa async/await:
// Primer sa 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('Greška pri dobijanju podataka:', error);
}
}
fetchData();
Konstrukcija async/await zasnovana je na promise-ima i predstavlja sintaktički šećer za rad sa njima. Funkcija označena kao async uvek vraća promise. Operator await može biti korišćen samo unutar async funkcija i "čeka" na rešavanje promise-a, vraćajući njegovu rešenu vrednost ili bacajući izuzetak u slučaju greške.