Junior
async/await va Promise o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
async/await — bu promislarga ustun sintaksik shakar. U asinxron kodni o‘qilishi oson va sinxron tarzda yozishga imkon beradi, async kalit so‘zi bilan funksiyalarni belgilash va ichida await yordamida promise ning hal bo‘lishini kutish uchun ishlatiladi. Promislar — bu asinxron operatsiyaning yakunlanishini (yoki muvaffaqiyatsizligini) va uning natijaviy qiymatini ifodalovchi obyektlar.
| Xususiyat | async/await | Promise |
|---|---|---|
| Sintaksis | Ko‘proq sinxron kodga o‘xshash. | .then(), .catch(), .finally() metodlarini ishlatadi. |
| O‘qilishi | Umuman olganda, yuqori, ayniqsa zanjirlar bilan. | Murakkab zanjirlar paytida "Callback hell" ga olib kelishi mumkin. |
| Xatolarni boshqarish | Standart try...catch ishlatadi. |
.catch() yoki .then() ikkinchi argumentini ishlatadi. |
| Paralellik | Aniq Promise.all() yoki Promise.allSettled() ishlatishni talab qiladi. |
Ko‘proq aniq bo‘lishi mumkin, ammo async/await bo‘lmasa kamroq o‘qiladi. |
// Promise bilan misol
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Ma’lumotlar olindi');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// async/await bilan misol
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Ma’lumotlar olindi');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();