Junior
Kuo skiriasi async/await ir Promise?
sobes.tech AI
Atsakymas iš AI
async/await yra sintaksinis cukrus virš pažadų. Jis leidžia rašyti asinchroninį kodą aiškesniu, sinchroniniu stiliumi, naudojant raktinius žodžius async funkcijoms, kurių viduje naudojami await laukimo pažadai. Pažadai yra objektai, kurie atstovauja galutinį asinchroninės operacijos užbaigimą (arba nesėkmę) ir jos rezultatą.
| Savybė | async/await | Promise |
|---|---|---|
| Sintaksė | Panašesnė į sinchroninį kodą. | Naudoja .then(), .catch(), .finally() metodus. |
| Skaitomumas | Dažnai didesnis, ypač grandinėse. | Gali sukelti "Callback hell" sudėtingose grandinėse. |
| Klaidų apdorojimas | Naudoja standartinį try...catch. |
Naudoja .catch() arba antrąjį .then() argumentą. |
| Paralelizmas | Reikalauja aiškios Promise.all() arba Promise.allSettled() naudojimo. |
Gali būti aiškesnis, bet mažiau skaitomas be async/await. |
// Pavyzdys su Promise
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Gauti duomenys');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Pavyzdys su async/await
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Gauti duomenys');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();