2011-01-19 17 views
124

widget.Rotator.rotate()'nin aramalar arasında 5 saniye ertelenmesini istiyorum ... jQuery'de bunu nasıl yapabilirim ... jQuery'nin delay()'ü bunun için işe yaramaz gibi görünüyor ...Bir işlev çağrısını 5 saniye boyunca nasıl geciktiririm?

+3

, otomatik olarak etkinleştirilmelerinde arasında 5 saniyelik bir gecikme ile çağrılacak istiyor musunuz ya da buna yanıt olarak çağrılacak mı Bir kullanıcı eylemine ve tekrar başlamadan önceki son çağrıdan en az 5 saniye beklediğinden emin olmak ister misiniz? İkincisi, kullanıcı olayları sıraya sokabilseydi veya 5 saniye geçmediyse, girişin göz ardı edilmesi gerekir mi? Hiçbir işlev parametreleri varsa – Phrogz

cevap

269

Sen düz javascript kullanabilirsiniz ... ... bunun için işe yaramaz jQuery en delay() gibi görünüyor bu jQuery bunu nasıl çağrılar arasında 5 saniye ... gecikmesine 5 saniye sonra, bir kez your_func arayacak: En işlev parametre vardır ve hiçbir açık alıcısı da keresinde kullandığınız bir eklenti doğrudan setTimeout(func, 5000)

yoktur çağırabilir

setTimeout(function() { your_func(); }, 5000); 

edin. oneTime ve everyTime yöntemlerine sahiptir.

+24

, bir 'function' içinde tamamlamayı gerek yoktur - bu yeterli olacaktır:' (your_func, 5000) setTimeout; ' – Oded

+1

@Oded Emin Rotator.rotate()' yapar değil 'bu Are Alıcının 'Rotator' olarak ayarlanması gerekiyor mu? Eğer önerdiğin şeyi perfomarsan, bu pencere olacak. – Phrogz

+1

@Phrogz - 'setTimout' mekaniği hakkında konuşuyordum. – Oded

18
var rotator = function(){ 
    widget.Rotator.rotate(); 
    setTimeout(rotator,5000); 
}; 
rotator(); 

Veya:

setInterval(
    function(){ widget.Rotator.rotate() }, 
    5000 
); 

Veya:

setInterval(
    widget.Rotator.rotate.bind(widget.Rotator), 
    5000 
); 
İlgili konular