JavaScript 📜
August 5

Navbatga qo'yish: setTimeout va setInterval

Biz funksiyalarni hozirning o'zida bajarilishini hohlamasligimiz mumkin. Balki biroz vaqtdan so'ng shu funksiyalarni bajarilishiga ehtiyoj tug'ilishi mumkin. Bu narsa "qo'ng'iroqni kechiktirish" deyiladi.

Ikki xil usul bor:

  • setTimeout biror belgilangan vaqtdan keyin funksiyani chaqirishga imkon beradi
  • setInterval funksiyani belgilangan interval oralig'ida to'xtovsiz bajarilishini anglatadi.

setTimeout

sintaksis:

let timerId = setTimeout(func|code, [delay], [arg1], [arg2], ...)

Parametrlar:

func/code - funksiya beriladi

delay - kechiktiriladigan vaqt (milliysekundlarda 1000 ms = 1s, default holatida 0 ga teng)

arg1, arg2 - funksiya uchun argumentlar

function sayHi() { alert('Hello'); }

setTimeout(sayHi, 1000);

Argumentlar bilan

function sayHi(phrase, who) { alert( phrase + ', ' + who ); }

setTimeout(sayHi, 1000, "Hello", "John"); // Hello, John

Agar birinchi argument string bo'lsa Javascript undan funksiya yasaydi. Shuningdek, quyidagi kod ham ishlaydi

setTimeout("alert('Hello')", 1000);

Ammo string lar ishlatish tavsiya etilmaydi. Uning o'rniga arrow funksiya ishlatgan maqul.

setTimeout(() => alert('Hello'), 1000);

Quyidagicha ishlatish noto'g'ri hisoblanadi.

// wrong! setTimeout(sayHi(), 1000);

Javascript odatda funksiyaga reference kutadi. sayHi() esa funksiyani ishga tushirib yuboradi.

clearTimeout bilan bekor qilish

setTimeout unique bo'lgan "timer Identifier" qaytaradi. Va u yordamida setTimeoutni bekor qilish mumkin.

let timerId = setTimeout(...);

clearTimeout(timerId);

let timerId = setTimeout(() => alert("never happens"), 1000); alert(timerId); // timer identifier

clearTimeout(timerId); alert(timerId); // same identifier (doesn't become null after canceling)

alert dagi taymer identifikatori brauzerda raqamdir. Boshqa muhitlarda bu boshqa narsa bo'lishi mumkin. Masalan, Node.js qo'shimcha usullar bilan taymer ob'ektini qaytaradi.

setInterval

setInterval ham bir xil sintaksisga ega

let timerId = setInterval(func|code, [delay], [arg1], [arg2], ...)

setInterval berilgan vaqt davomida funksiyani ishga tushirib turadi. Uni clearInterval orqali bekor qilinadi.

// repeat with the interval of 2 seconds let timerId = setInterval(() => alert('tick'), 2000);

// after 5 seconds stop setTimeout(() => { clearInterval(timerId); alert('stop'); }, 5000);