Sobes.tech
Middle

setTimeout funksiyasining nol kechikish bilan ishlatilishining maxsus holati haqida gapiring.

sobes.tech AI

AIdan javob

setTimeout(callback, 0) callbackni makro vazifa (makro vazifa navbati) ro'yxatiga qo'yiladi. callback ichidagi kod hozirgi chaqirishlar steki bo'sh bo'lgach va keyingi makro vazifa tsikli event loopda ishlov berilgach bajariladi.

Asosiy foydalanish holatlari:

  • Renderdan keyingi kechiktirilgan bajarish: Brauzer hozirgi DOM o'zgarishlarini ishlov berib bo'lgach, kodni bajarishga imkon beradi.
    // DOM elementini o'zgartirish
    element.textContent = 'Yangi matn';
    
    // Yangilangan DOMga bog'liq kechiktirilgan harakat
    setTimeout(() => {
      console.log('DOM yangilandi, yangi holat bilan ishlash mumkin');
    }, 0);
    
  • Uzoq operatsiyalarni bo'lish: Asosiy oqimni bloklamaslik uchun yordam beradi, uzoq hisoblashlarni kichik qismlarga bo'lib, mikro vazifalarda (makro vazifalarda) bajaradi.
    function processLargeData(data) {
      let i = 0;
      function processChunk() {
        const chunkSize = 1000;
        const end = Math.min(i + chunkSize, data.length);
    
        // Ma'lumotning bir qismini ishlash
        for (let j = i; j < end; j++) {
          // data[j] bilan nima qilish
        }
    
        i = end;
        if (i < data.length) {
          // Keyingi qismini kechiktirish
          setTimeout(processChunk, 0);
        } else {
          console.log('Ishlash yakunlandi');
        }
      }
      processChunk();
    }
    
  • Asosiy skript bajarilgandan keyin bajarishni o'tkazish: Ma'lum bir kodning to'liq ishga tushirilishini ta'minlaydi, hozirgi skriptning to'liq ishga tushirilishi va barcha sinxron operatsiyalar bajarilganidan so'ng.
    console.log('Skript boshlanishi');
    
    setTimeout(() => {
      console.log('Asosiy skriptdan keyin bajariladi');
    }, 0);
    
    console.log('Skript oxiri');
    // Natija:
    // Skript boshlanishi
    // Skript oxiri
    // Asosiy skriptdan keyin bajariladi
    

E'tibor bering, nol kechikish darhol bajarilishni anglatmaydi. Bajarilish vaqti event loopning yukiga va navbatdagi vazifalarga (xususan, mikro vazifalar makro vazifalardan oldin) bog'liq.