SORU
25 Ocak 2010, PAZARTESİ


Javascript döngü sayacı

Javascript kodu söyle, her 2000 milisaniyede bir parça yürütmek için ihtiyacım var.

setTimeout('moveItem()',2000)

Yukarıda 2000 milisaniye sonra fonksiyonu çalıştırır, ama yine idam olmayacak.

Yani içinde benim moveıtem var fonksiyon:

function moveItem() {
    jQuery(".stripTransmitter ul li a").trigger('click');
    setInterval('moverItem()',2000);
}

Bu kod tetiği tıklatarak jQuery parça 2000 milisaniye her aralığı çalıştırmak istiyorum çünkü çalışmıyor, ama şu an sürekli çağrılan ve senaryo kesintiye uğramış olması gerekir. Bunun yanı sıra, bu çok kötü hissediyorum kaliteli kodlama... bunu Nasıl çözersin?

Çok teşekkür ederim.

CEVAP
25 Ocak 2010, PAZARTESİ


setTimeout setInterval çok farklı işlevleri olan not:

  • setTimeout kodu çalıştırırbir kezzaman aşımı sonra.
  • setInterval kod çalıştırırsonsuza dekkaydıyla , zaman aşımı aralıklarla.

Her iki işlevi bir dönüşzamanlayıcı KİMLİĞİzaman aşımı iptal etmek için kullanabilirsiniz. Tüm yapmanız gereken bir değişken değeri saklamak ve clearTimeout(tid) clearInterval(tid) değişken olarak sırasıyla kullanın.

Yani, yapmak istediğiniz ne bağlı olarak, geçerli iki seçeneğiniz var:

// set timeout
var tid = setTimeout(mycode, 2000);
function mycode() {
  // do some stuff...
  tid = setTimeout(mycode, 2000); // repeat myself
}
function abortTimer() { // to be called when you want to stop the timer
  clearTimeout(tid);
}

ya

// set interval
var tid = setInterval(mycode, 2000);
function mycode() {
  // do some stuff...
  // no need to recall the function (it's an interval, it'll loop forever)
}
function abortTimer() { // to be called when you want to stop the timer
  clearInterval(tid);
}

Her ikisi de aynı ulaşmanın en yaygın yolu vardır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DavidParody

    DavidParody

    17 EKİM 2009
  • edwin maldonado

    edwin maldon

    28 Mart 2009
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006