Javascript: setTimeout ve setInterval Farkı

Giriş

Hepinize merhabalar arkadaşlar,
Bu yazımızda sizlerle birlikte javascriptte yaygın olarak kullanılan setTimeout ve setInterval fonksiyonlarına değineceğiz.

Bu iki fonksiyonun temel amacı; istediğiniz görevleri(komutları) belirli periyotlarda yerine getirmesidir.
Bu periyotlar milisaniye cinsinden girilir.

İkisini birbirinden ayıran nokta ise; setTimeout'un görevleri sadece bir defa yerine getirmesi, setInterval'in ise siz durdurmadığınız sürece aynı periyotta görevleri bir defadan fazla tekrarlamasıdır.

SetTimeout

setTimeOut fonksiyonu belirttiğiniz milisaniye'den sonra tek seferlik çalışır.
Örneğin sitenizde x saniye sonra tek seferlik reklam çıkmasını istiyor olabilirsiniz.

setTimeout(() => {
    //10 saniye sonra yapılacak işlemler
    alert("reklam")
},10000)

10 saniye sonra karşılaşacağımız ekran görüntüsü:
Screenshot_257

SetInterval

setInterval fonksiyonu ise setTimeout'un neredeyse aynısıdır. Birbirinden ayıran nokta ise bu fonksiyonun birden fazla kez aynı periyotta çalışmasıdır.
Örneğin 15 saniye sonra reklamı geç butonu çıkan bir uygulama yapalım.

HTML:

<body>
    <p>Video <span id="time">15</span> saniye sonra açılacaktır.</p>
</body>

JAVASCRIPT:

let second = 15;
setInterval(() => {
    second--;
    document.querySelector("#time").innerText = second;
}, 1000);

ÇIKTI:
setInterval-1

Her bir saniyede second değişkeni bir azaltılarak ekrana basılıyor.
Fakat sonsuza kadar azalarak devam ediyor. Çünkü setInterval fonksiyonunu biz durdurmadığımız sürece işlemlerini yapmaya devam eder.

clearInterval ve clearTimeout Fonksiyonları

Gelin şimdi de setInterval fonksiyonunu nasıl durduracağımıza bakalım.
Öncelikle yukarıda yazdığımız setInterval fonksiyonunu bir değişkene atayalım:

let second = 15;
let secondInterval = setInterval(() => {
    second--;
    document.querySelector("#time").innerText = second;
}, 1000);

Şimdi ise clearInterval fonksiyonunu kullanarak saniye 0 ise bu fonksiyonu kaldıralım. Kodlarımızın son hâli:

let second = 15;
let secondInterval = setInterval(() => {
    second--;
    document.querySelector("#time").innerText = second;
    if (second == 0) clearInterval(secondInterval);
}, 1000);

setInterval-2-1

clearTimeout'u da setTimeout kullandığınız işlemlerde yukarıdaki gibi kullanabilirsiniz.
Ve tüm işlemlerimiz bu kadar!
Okuğunuz için teşekkürler, bir sonraki yazımda görüşmek üzere!

Tolga Çağlayan

Tolga Çağlayan

En tehlikeli kelime nedir Olric? -Ama’dır efendim bana göre. Neden Olric? -Önceden söylenen her söylemi veya kelimeyi öldürür! Mesela, seni seviyorum ama. gibi.
Anonim