簡體   English   中英

以時間間隔連續重復運行JavaScript函數

[英]Run a JavaScript function continuously repeating with a time interval

這是我的第一個問題,我很高興你很快回答。

我想代碼連續重復一個函數...我嘗試了一些代碼,但它沒有工作。

我試過這段代碼:

<script type="text/javascript">
$(function() 
{
$('#more').load('exp1.php'); // SERIOUSLY!
});
</script>

我想在一段時間后重復這個功能。 我試過setInterval()setTimeout()

但是,我還沒有收到結果。

這將重復該任務,直到您清除間隔(使用clearTimeout(repater))

var repeater;

function doWork() {
 $('#more').load('exp1.php');
 repeater = setTimeout(doWork, 1000);
}

doWork();

每個OP的原始條件:

我想要連續重復功能的代碼......

你可以這樣做

var myFunction = function() {
    $('#more').load('bla.php'); 
};

var timer =  setInterval(myFunction, 1000); // call every 1000 milliseconds

要么

var timer = setTimeout(myFunction, 1000); // call every 1000 milliseconds

clearTimeout(timer); //To stop the function from being called forever

as @Christofer Eliasson 對於Ajax請求,您可能希望使用超時而不是間隔 ,在回調中再次啟動超時,以確保在服務器占用的時間超過1時不進行堆棧調用第二個回應

好讀

  1. MDN:window.setTimeout
  2. MDN:window.setInterval

對於Ajax請求,我會使用超時而不是間隔,並在ajax-request的回調中再次啟動超時。

如果您使用1秒的間隔並且您的服務器需要超過一秒鍾來響應,您將開始以間隔堆疊呼叫,因為無論如何,間隔將每秒調用該函數。 相反,使用超時回調方法,您將無法在上一個請求完成之前開始倒計時。

我正在使用IIFE來觸發對函數的第一次調用。 然后當加載完成后,我使用超時在一秒后再次調用該函數:

(function loadContent(){
    $('#more').load('exp1.php', function () {
       setTimeout(loadContent, 1000);
    });   
})();

把它扔出去:

function doRequest() {
$.ajax({
  url: 'exp1.php',
  timeout: 1000,
  success: function(data) {
    $('#more').html(data);
    doRequest();
  }
});
}

一些好的時尚遞歸怎么樣?

function getStuff() {
    $('#more').load('exp1.php', function() {
        getStuff();
    });
}

getStuff();​

演示:
http://jsfiddle.net/Zn2rh/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM