2013-07-21 27 views
1

我有一個每分鐘運行的函數,但是我希望函數先運行然後每分鐘運行一次。如何才能做到這一點,我的函數如下所示:區間函數

JS

setInterval(function() { 
    $.ajax({ 
      //some code 
    }); 

}, 1000 * 60 * 1); 

回答

0

使用一個命名的函數,或將該函數存儲在一個變量中。這是我會怎麼做:

function doSomethingWithAjax() { 
    $.ajax(...); 
} 

doSomethingWithAjax(); 
setInterval(doSomethingWithAjax, 1000 * 60 * 1); 
+0

這個工作對我來說 –

0

可以存儲功能的一個變量,它傳遞到setInterval,然後調用它。看看:

var intervalFunction = function(){ 
    $.ajax({ 
      //some code 
    }); 
}; 

setInterval(intervalFunction, 1000 * 60 * 1); 
intervalFunction(); 
0

更好的方法可能是:

var callServer = function(){ 
    $.ajax({ 
     url: 'url' 
    }).done(function(data){ 
     //do something with data 
     setTimeout(callServer, 1000); 
    }); 
} 
+0

你已經忽略了實際調用功能在拳頭的地方。除此之外,這將是一個好方法。 – Alnitak

0

我會嘗試遞歸調用函數,所以阿賈克斯完成後60秒的計時器只啓動。

function functionName(){ 
    $.ajax({ 
     //do something 
    }).done(function(){ 
     setTimeout(functionName, 60*1000) 
    }); 
} 

然後,您只需在腳本開始時調用一次該函數。

functionName(); 
+0

使用此選項時,出現'functionName();'不是函數的錯誤,當我嘗試調用它時 –

+0

抱歉在面向對象模式下修復了它。 –

1

創建一個命名函數另一種方法是創建一個用於運行功能一次然後調度它的執行的功能:

function runAndSetInterval(func, millis) { 
    func(); 
    setInterval(func, millis); 
} 

... 

runAndSetInterval(function() { 
    $.ajax({ 
    // some code 
    }); 
}, 1000 * 60 * 1); 
相關問題