Middle
Siz voqealar sikli (event loop) bilan qanday muloqot qilasiz?
sobes.tech AI
AIdan javob
Men to'g'ridan-to'g'ri voqealar tsikliga aralashmayman, chunki bu JavaScript dvigatelining ichki mexanizmasidir (masalan, Node.js va brauzerlardagi V8). Mening aralashuvim bilvosita, asinxron operatsiyalar orqali amalga oshadi.
Asosiy aloqalar nuqtalari:
- Vaqt o'lchovchilar:
setTimeout,setInterval. Ular vazifalarni callbacklar navbatiga qo'yadi, ular voqealar tsikli tomonidan vaqt o'tgach bajariladi. - Vaadalar:
Promise. Ularning metodlari (then,catch,finally) callbacklarni ro'yxatga oladi, ular voqealar tsiklining mikro vazifalarida asinxron ravishda bajariladi. - Asinxron kirish/chiqish operatsiyalari: Serverga so'rovlar (
fetch,XMLHttpRequest), Node.jsda fayl tizimi bilan ishlash. Ularning yakunlanishi mos callbacklarni makro yoki mikro vazifa navbatiga joylashtirishga olib keladi. - DOM voqealarini boshqaruvchilar:
addEventListener. Boshqaruvchilarning callbacklari voqealar tsikli DOMda yuzaga kelgan voqeani ishlayotganda bajariladi.
Asinxron operatsiya uchun va'dalar (promislar) dan foydalanish misoli:
// Asinxron funktsiya
async function fetchData(url) {
try {
const response = await fetch(url); // Asinxron operatsiya
if (!response.ok) {
throw new Error(`HTTP xatosi: ${response.status}`);
}
const data = await response.json(); // Asinxron operatsiya
return data;
} catch (error) {
console.error('Ma'lumotlarni olishda xato:', error);
throw error; // Xatoni qayta yuborish
}
}
// Asinxron funktsiyani chaqirish va natijani qayta ishlash
fetchData('https://api.example.com/data')
.then(data => {
console.log('Olingan ma'lumotlar:', data); // Bu callback asinxron ravishda bajariladi
})
.catch(error => {
console.error('Xato yuz berdi:', error); // Xato bo'lsa, bajariladi
});
console.log('Bu kod asinxron operatsiyalar tugashidan OLDIN bajariladi.'); // Synchronous kod
Event loop qanday ishlashini tushunish, bloklamaydigan kod yozishga yordam beradi, asinxron operatsiyalarni samarali boshqarish va foydalanuvchi interfeysining