Asinxron JavaScript bilan qanday ishlaysiz?
sobes.tech AI
AIdan javob
JavaScript-da asinxronlik bilan ishlash uchun callbacklar, promise-lar va async/await-dan foydalanaman.
Callbacklar — bu boshqa funksiyalarga argument sifatida beriladigan va ma'lum bir operatsiya tugagach bajariladigan funksiyalar. Ular ichma-ich joylashganda "callbacklar do'zaxiga" olib kelishi mumkin.
// Callback misoli
function fetchData(callback) {
setTimeout(() => {
callback("Ma'lumotlar olindi");
}, 1000);
}
fetchData((data) => {
console.log(data); // 1 sekunddan so'ng "Ma'lumotlar olindi" chiqaradi
});
Promise-lar — bu asinxron operatsiyaning yakunlanishi yoki muvaffaqiyatsizligini ifodalovchi obyektlar. Ular asinxron kod bilan ishlashni osonlashtiradi, chuqur ichma-ichlikdan qochishga yordam beradi. Ularning uch holati bor: pending (kutish), fulfilled (muvaffaqiyatli bajarilgan), rejected (rad etilgan).
// Promise misoli
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Ma'lumotlar olindi");
}, 1000);
});
}
fetchDataPromise()
.then((data) => {
console.log(data); // 1 sekunddan so'ng "Ma'lumotlar olindi" chiqaradi
})
.catch((error) => {
console.error("Xato:", error);
});
Async/await — bu promise-lar ustida sintaktik shakar bo'lib, asinxron kodni o'qilishi osonroq qiladi, sinxron kodga o'xshash qiladi. async bilan belgilangan funksiya har doim promise qaytaradi. await operatori faqat async funksiyalar ichida ishlatiladi va promise bajarilishini yoki rad etilishini kutadi.
// Async/await misoli
async function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Ma'lumotlar olindi");
}, 1000);
});
}
async function processData() {
try {
const data = await fetchDataAsync();
console.log(data); // 1 sekunddan so'ng "Ma'lumotlar olindi" chiqaradi
} catch (error) {
console.error("Xato:", error);
}
}
processData();
API so'rovlar bilan ishlashda async/awaitni ko'p ishlataman, chunki bu eng qulay va o'qilishi oson usul. Bir nechta asinxron operatsiyani parallel bajarish uchun Promise.all() yoki Promise.allSettled() dan foydalanaman.
Event loop yordamida asinxron kodning bajarilish tartibini, mikro-vazifalar va makro-vazifalarni tushunaman.