SetInterval yerine setTimeout işlevini kullanmanız dışında, anonim bir işlev gerçekleştirebilir ve hemen çağırabilirsiniz.
(function doStuff() {
//Do Stuff Here
setTimeout(doStuff,20000);
})();
Bu, işlevi yürütecek, ardından 20 saniye içinde tekrar arayacaktır.
İstediğiniz davranışa veya bazı durumlarda performansa bağlı olarak setTimeout'u setInterval üzerinden kullanmak daha iyi olabilir. Asıl fark, setInterval'ın, zaman aşımı ne zaman olursa olsun bu fonksiyonu çağırmasıdır, son çağrı yürütülürse REGARDLESS veya bir hata oluşursa. SetTimeout'u kullanmak bu moda, zamanlayıcının sıfırlanmadan önce işlevinin yürütmeyi bitirmesini sağlar. Bir çok tradeoff çok açık, ancak uygulamanızı tasarlarken aklınızda bulundurmanız iyi bir şey.
EDIT Patrick dw'nin zaman aşımını iptal etme gereksinimiyle ilgili endişesine yanıt olarak.En iyi çözüm anonim işlevini kullanın ve sadece ilanı sonrasında diyoruz getirmemektir
var timeout;
function doStuff() {
//doStuff
timeout = setTimeout(doStuff,20000);
}
doStuff()
Evet bu OP önlemek çalışıyordu ne benzer, ancak çağrı sonra işlevini çağırmak ve ihtiyacını ortadan kaldırır gelmez setInterval işlevi, böylece bir kod satırı kaydedin. Fonksiyonu istediğiniz zaman durdurabilir ve başlatabilirsiniz:
//Stop it
clearTimeout(timeout);
//Start it
doStuff();
Yararlı bilgi. Teşekkürler! – Andrew