Sobes.tech
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