JavaScript timer funksiyalari (setTimeout, setInterval)
Bildirishnomani uch soniyadan keyin yashirish, soatni har soniya yangilash, foydalanuvchi yozishni tugatganda qidiruv yuborish — bularning barchasi timer funksiyalari bilan bajariladi.
setTimeout — bir marta
Callback darsidan ma’lum: setTimeout kodni
to’xtatmaydi, faqat navbatga qo’yadi.
Timerni bekor qilish
setTimeout identifikator qaytaradi — u orqali to’xtatiladi:
setInterval — takroriy
Sanoq — amaliy misol
id !== null tekshiruvi ikki marta bosilganda ikkita timer ishga
tushishining oldini oladi — bu keng uchraydigan xato.
Kechikish aniq emas
Kechikish so’ralganidan ko’proq bo’ldi: JavaScript bir oqimda ishlaydi,
callback navbatda kutdi. setTimeout — “shuncha vaqtdan keyin eng erta”
degani.
setTimeout bilan takrorlash
setInterval o’rniga zanjirli setTimeout ko’pincha xavfsizroq:
Farqi: bu yerda keyingi kechikish oldingisi tugagandan keyin boshlanadi.
setInterval esa oldingisi tugamasa ham navbatga qo’yaveradi.
Debounce — yozish tugaguncha kutish
Har bosishda oldingi timer bekor qilinadi — so’rov faqat foydalanuvchi to’xtaganda yuboriladi. Aks holda har harf uchun alohida so’rov ketardi.
Throttle
Beshta chaqiruvdan faqat bir qismi o’tdi — closure
ichidagi ruxsat qolganini to’sdi.
Promise bilan kechikish
Bu funksiya async/await bilan birga eng ko’p ishlatiladigan yordamchilardan biri.
Amaliy mashq
setTimeoutbilan 2 soniyadan keyin xabar chiqaring;- uni
clearTimeoutbilan bekor qiling; setIntervalbilan 5 martadan keyin to’xtaydigan sanoq yozing;- tugmani ikki marta bosganda ikkita timer ishga tushmasligini ta’minlang;
- input uchun debounce yozing;
kut(ms)funksiyasini yozib,awaitbilan ishlating.
Qisqacha xulosa
setTimeoutbir marta,setIntervaltakror bajaradi.- Ikkalasi identifikator qaytaradi —
clearTimeout/clearIntervalbilan to’xtatiladi. - Har
setIntervaluchun to’xtatish sharti bo’lishi shart. - Kechikish aniq emas: “eng erta shuncha vaqtdan keyin”.
- Debounce oxirgi hodisadan keyin, throttle oraliqda bir marta ishlaydi.
setTimeoutni Promise’ga o’rab,await kut(ms)yozish mumkin.
Keyingi darsda hodisa delegatsiyasi — ko’p elementni bitta tinglovchi bilan boshqarish.