Bir javascript 'wait' işlevi oluşturmak istiyorum. neleri değiştirmeliyim?Javascript wait() işlevi
function wait(waitsecs){
setTimeout(donothing(), 'waitsecs');
}
function donothing() {
}
Bir javascript 'wait' işlevi oluşturmak istiyorum. neleri değiştirmeliyim?Javascript wait() işlevi
function wait(waitsecs){
setTimeout(donothing(), 'waitsecs');
}
function donothing() {
}
Javascript iş parçacığı değil, bu nedenle "bekle", tüm sayfayı dondurabilir (ve muhtemelen tarayıcının komut dosyasını çalıştırmayı durdurmasına neden olabilir).
özel olarak sorunu çözmek için, setTimeout
çağrısında donothing
sonra parantez kaldırmak ve bir sayı değil bir dize waitsecs
yapmalıdır:
console.log('before');
setTimeout(donothing,500); // run donothing after 0.5 seconds
console.log('after');
Ama bu yürütülmesine durmayacak; İşlevinizden önce "sonra" kaydedilir.
Anonim işlevleri kullanabilirsiniz, düzgün beklemek için:console.log('before');
setTimeout(function(){
console.log('after');
},500);
Bütün değişkenler hala "sonra" bölümünde olacak. Bunları zincirlememelisiniz - eğer kendinize ihtiyaç duyuyorsanız, programı nasıl yapılandırdığınıza bakmanız gerekir. Ayrıca, döngü gerekiyorsa setInterval
/clearInterval
'u kullanmak isteyebilirsiniz.
Ne basit bir kod! :) –
Düzenlemek olmamalı, bu siteyi tümüyle iptal etmelidir.
Belirli bir süre boyunca yürütmeyi durdurma girişimi, tarayıcıyı kilitleyecek ve Yanıt Vermiyor durumuna getirecektir. Yapabileceğiniz tek şey, setTimeout
'u doğru kullanmaktır.
Muhtemelen setTimeout (donothing(), waitsecs) anlamına geliyordu; ancak bunun ne olduğunu göremiyorum. 'setTimeout' engellemez ve siz bir spin-wait yaratmamalısınız. http://stackoverflow.com/q/951021/139010 –
Daha iyi bir soru * neden * bekleme fonksiyonuna sahip olmak istersiniz? –
Bu kod derhal * * * * demeyi çağırır ve bir parametrenin değerini değil, bir dizgeyi geçirir. setTimeout (donits, waitsecs) 'ın daha iyi bir girişimi olacaktır .. aptal bir sarıcı. –