2014-12-03 4 views
4

나는 이것에 대한 연구를 해왔고 아무 것도 생각지도 못했습니다. 기본적으로, 나는 각 호출 사이에 10 초를 기다리는 함수를 호출하는 데이터 수집 프로그램을 작성하려고합니다. 그러나 내가 찾을 수있는 것은 "x 초마다 y 초 동안 함수를 호출하는 방법"입니다. 3 번 호출을 모두 완료하는 데 y 초 이상 걸릴 수 있으므로 문제를 완전히 해결하지 못합니다. setInterval과 clearIntervals를 사용해야한다는 것을 알고 있지만, 필자는 루프를 포맷하는 방법을 알지 못합니다.Javascript - 매 x 초마다 함수를 실행하지만 함수를 3 번만 실행하십시오.

답변

10

사용하여 setInterval을 다음 각 실행에 카운터를 유지 간격을 취소 할 때 카운트가 충분히 커집니다.

(function() { 
    var c = 0; 
    var timeout = setInterval(function() { 
    //do thing 
    c++; 
    if (c > 2) { 
     clearInterval(timeout); 
    } 
    }, 10000); 
})(); 

http://codepen.io/anon/pen/bNVMQy

+2

하이 파이브 동료 맥널리! – Pointy

9

사용 setTimeout :

그런 다음
function callNTimes(n, time, fn) { 
    function callFn() { 
    if (--n < 0) return; 
    fn(); 
    setTimeout(callFn, time); 
    } 
    setTimeout(callFn, time); 
} 

당신이 당신의 계산 반복 설정하기 위해 해당 기능을 사용할 수 있습니다

callNTimes(3, 10000, function() { /* whatever */ }); 
관련 문제