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
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
Nasıl JavaScript ile Döngü üyeleri ola...
Nasıl Javascript bir Nesne adı olarak ...
Bir döngü içinde nesne harfleri bir di...
Nasıl json oluşturmak için döngü için ...
Nasıl'bir dize dönen s bir değere...