Junior
Ի՞նչ տարբերություն կա Promise-ի օգտագործման և async/await սինտաքսիքի միջև։
sobes.tech AI
Պատասխան AI-ից
Promise ներկայացնում է օբյեկտ, որը արտացոլում է վերջնական ավարտը կամ մերժումը ասինխրոնային օպերացիայի։ Այն կառավարում է ասինխրոնային հոսքերը then() և catch() callback-ների միջոցով։
async/await - դա Promise-ի վրա հիմնված սինտաքսիկ շաքար է, որը դարձնում է ասինխրոնային կոդը ավելի ընթեռնելի և սինխրոնայինի նման։ Ֆունկցիան, որը նշված է որպես async, միշտ վերադարձնում է Promise։ Օպերատոր await-ը կարելի է օգտագործել միայն async ֆունկցիայի ներսում և այն դադարեցնում է ֆունկցիայի կատարմանը մինչև Promise-ը կատարվի կամ մերժվի, ապա վերադարձնում է նրա արդյունքը կամ գեներացնում է արտահայտություն։
| Աспեկտ | Promise | Async/Await |
|---|---|---|
| Ընթերցելիություն | Պահանջում .then() և .catch() շղթաներ |
Դեռևս սինխրոնային կոդի նման, գծային հոսք |
| Հետախուզման սխալներ | Օգտագործում է .catch() |
Օգտագործում է try...catch բլոկներ |
| Հոսքի կատարման | Կառավարում է callback-ներով | Դադարեցնում/վերականգնում է ֆունկցիան |
| Վերադարձվող արժեք | Promise | Promise (async ֆունկցիայի համար) կամ Promise-ի արդյունք (await-ի համար) |
| Զависимость | Անկախ մեխանիզմ | Ներդրված է Promise-ի վրա |
Օրինակ Promise-ով:
// Օրինակ Promise-ով
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Տվյալները ստացվել են (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
Օրինակ async/await-ով:
// Օրինակ `async/await`-ով
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Տվյալները ստացվել են (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();