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.