Junior
Promise va async/await sintaksidan foydalanish o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Promise — bu asinxron operatsiyaning yakunlanishi yoki rad etilishini aks ettiradigan obyekt. U .then() va .catch() callbacklari yordamida asinxron oqimlarni boshqaradi.
async/await — bu Promise ustidagi sintaktik shakar bo‘lib, asinxron kodni o‘qilishi osonroq va sinxron kodga o‘xshash qiladi. async bilan belgilangan funksiya har doim Promise qaytaradi. await operatori faqat async funksiyalar ichida ishlatilishi mumkin va funksiyaning bajarilishini Promise hal qilinmaguncha yoki rad etilguncha to‘xtatadi, uning natijasini qaytaradi yoki istisno chiqaradi.
| Nuqta | Promise | Async/Await |
|---|---|---|
| O‘qilishi | .then() va .catch() zanjirlari talab etiladi |
Sxemaga o‘xshash, chiziqli oqim |
| Xatoliklarni boshqarish | .catch() ishlatadi |
try...catch bloklarini ishlatadi |
| Bajarilish oqimi | CallBacklar yordamida boshqariladi | To‘xtatadi/ davom ettiradi funksiyani |
| Qaytadigan qiymat | Promise | Promise (async funksiyalar uchun) yoki Promise natijasi (await uchun) |
| Bog‘liqlik | Mustaqil mexanizm | Promise asosida |
Promise bilan misol:
// Promise misoli
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Ma’lumotlar olindi (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
async/await bilan misol:
// async/await bilan misol
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Ma’lumotlar olindi (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();