2013-07-21 2 views
1

저는 매분마다 실행되는 함수를 가지고 있지만 함수가 먼저 실행되고 매분마다 실행되기를 원합니다. 이 작업을 수행 할 수있는 방법, 내 기능은 다음과 같습니다 :간격 함수

JS

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

}, 1000 * 60 * 1); 

답변

0

명명 된 함수를 사용하거나 변수에 함수를 저장하십시오.

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

을 –

0

당신이 그것을 호출 한 후, 변수에 함수를 저장하는 setInterval에 전달할 수 있습니다. 보십시오 :

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

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

더 좋은 방법 일 수 있습니다 : 여기에 내가 그것을 할 것입니다 방법입니다.

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

그런 다음이 기능은 스크립트 시작시 한 번만 호출하면됩니다.

functionName(); 
+0

당신은 실제로 전화를 생략 한 기능을 주먹 장소. 그 외에도, 이것은 좋은 접근 방법이 될 것입니다. – Alnitak

0

내가 재귀 함수를 호출하려고 할 것입니다, 그래서 아약스가 완료된 후에만 타이머 60 초 시작합니다

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

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

이 옵션을 사용하면'functionName();은 호출하려고 할 때 함수가 아닙니다. –

+0

죄송합니다. 객체 지향 모드에서 죄송합니다. –

1

명명 된 기능을 생성하는 또 다른 방법은 실행을위한 일정을 번 다음 함수를 실행하는 기능을 작성하는 것입니다 : 이것은 나를 위해 일한

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

... 

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