Junior
Ի՞նչ է տարբերությունը async/await և Promise-ի միջև։
sobes.tech AI
Պատասխան AI-ից
async/await-ը սինտաքսիկ շաքար է պրոմիսների վրա: Այն թույլ է տալիս գրել ասինխրոն կոդ ավելի ընթեռնելի և սինխրոնային ոճով՝ օգտագործելով async բանալի բառը ֆունկցիաների համար, որոնք պարունակում են await՝ սպասելու պրոմիսի լուծմանը: Պրոմիսները օբյեկտներ են, որոնք ներկայացնում են ասինխրոն գործողության վերջնական ավարտը (կամ ձախողումը) և դրա արդյունք արժեքը:
| Գծանշում | async/await | Promise |
|---|---|---|
| Սինտաքս | Ավելի շատ նման է սինխրոնային կոդին: | Օգտագործում է .then(), .catch(), .finally() մեթոդները: |
| Կարդալություն | Ընդհանուր առմամբ ավելի բարձր, հատկապես շղթաներում: | Կարող է հանգեցնել "Callback hell"-ի բարդ շղթաներում: |
| Սխալների կառավարում | Օգտագործում է ստանդարտ try...catch: |
Օգտագործում է .catch() կամ երկրորդ արգումենտը .then()-ում: |
| Պարալելիզմ | Պահանջում է բացահայտ օգտագործել Promise.all() կամ Promise.allSettled(): |
Կարող է լինել ավելի պարզ, բայց ավելի քիչ ընթերցվող առանց async/await: |
// Օրինակ Promise-ով
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Տվյալները ստացվեցին');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Օրինակ async/await-ով
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Տվյալները ստացվեցին');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();