SORU
27 AĞUSTOS 2010, Cuma


Nasıl bir JavaScript döngü bir gecikme eklerim?

while bir döngü içinde uyu/bir gecikme eklemek istiyorum:

Bu gibi çalıştım:

alert('hi');

for(var start = 1; start < 10; start  ) {
  setTimeout(function () {
    alert('hello');
  }, 3000);
}

alert('hi'), 3 saniye sonra alert('hello') bekliyor olacak gösteren görüntülenir ama o alert('hello') art arda sürekli olacak sonra. doğrudur ilk senaryo sadece:

İstiyorum alert('hello') 3 saniye alert('hi') sonra gösterilir sonra ikinci kez 3 saniye alert('hello') ve beklemek gerekiyor.

Herkes tavsiye verebilir mi?

Şimdiden teşekkürler.

CEVAP
27 AĞUSTOS 2010, Cuma


setTimeout() işlevi olmayan engelliyor ve hemen geri dönecek. Bu nedenle döngü çok hızlı bir şekilde yineleme ve 3 saniyelik bir zaman aşımı hızlı bir şekilde birbiri ardına tetikler başlatacaktır. İlk uyarılarınızı kadar 3 saniye sonra pop neden olur, ve diğerleri herhangi bir gecikme olmadan arka arkaya izleyin.

Böyle bir şey yerine kullanmak isteyebilirsiniz:

var i = 1;                     //  set your counter to 1

function myLoop () {           //  create a loop function
   setTimeout(function () {    //  call a 3s setTimeout when the loop is called
      alert('hello');          //  your code here
      i  ;                     //  increment the counter
      if (i < 10) {            //  if the counter < 10, call the loop function
         myLoop();             //  ..  again which will trigger another 
      }                        //  ..  setTimeout()
   }, 3000)
}

myLoop();                      //  start the loop

Ayrıca, kendi kendine fonksiyon çağırma kullanarak, bağımsız değişken olarak yineleme sayısı geçen neaten.

(function myLoop (i) {          
   setTimeout(function () {   
      alert('hello');          //  your code here                
      if (--i) myLoop(i);      //  decrement i and call myLoop again if i > 0
   }, 3000)
})(10);                        //  pass the number of iterations as an argument

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • Perihelion

    Perihelion

    23 NİSAN 2008
  • REK Roth Productions

    REK Roth Pro

    8 Ocak 2011