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

JavaScript

Callback darsidan ma’lum: setTimeout kodni to’xtatmaydi, faqat navbatga qo’yadi.

Timerni bekor qilish

setTimeout identifikator qaytaradi — u orqali to’xtatiladi:

JavaScript

setInterval — takroriy

JavaScript

Sanoq — amaliy misol

JavaScript
Sahifa

id !== null tekshiruvi ikki marta bosilganda ikkita timer ishga tushishining oldini oladi — bu keng uchraydigan xato.

Kechikish aniq emas

JavaScript

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:

JavaScript

Farqi: bu yerda keyingi kechikish oldingisi tugagandan keyin boshlanadi. setInterval esa oldingisi tugamasa ham navbatga qo’yaveradi.

Debounce — yozish tugaguncha kutish

JavaScript
Sahifa

Har bosishda oldingi timer bekor qilinadi — so’rov faqat foydalanuvchi to’xtaganda yuboriladi. Aks holda har harf uchun alohida so’rov ketardi.

Throttle

JavaScript

Beshta chaqiruvdan faqat bir qismi o’tdi — closure ichidagi ruxsat qolganini to’sdi.

Promise bilan kechikish

JavaScript

Bu funksiya async/await bilan birga eng ko’p ishlatiladigan yordamchilardan biri.

Amaliy mashq

  1. setTimeout bilan 2 soniyadan keyin xabar chiqaring;
  2. uni clearTimeout bilan bekor qiling;
  3. setInterval bilan 5 martadan keyin to’xtaydigan sanoq yozing;
  4. tugmani ikki marta bosganda ikkita timer ishga tushmasligini ta’minlang;
  5. input uchun debounce yozing;
  6. kut(ms) funksiyasini yozib, await bilan ishlating.

Qisqacha xulosa

  • setTimeout bir marta, setInterval takror bajaradi.
  • Ikkalasi identifikator qaytaradi — clearTimeout/clearInterval bilan to’xtatiladi.
  • Har setInterval uchun to’xtatish sharti bo’lishi shart.
  • Kechikish aniq emas: “eng erta shuncha vaqtdan keyin”.
  • Debounce oxirgi hodisadan keyin, throttle oraliqda bir marta ishlaydi.
  • setTimeout ni Promise’ga o’rab, await kut(ms) yozish mumkin.

Keyingi darsda hodisa delegatsiyasi — ko’p elementni bitta tinglovchi bilan boshqarish.

Bu dars foydali bo'ldimi?

marta ko'rildi