setInterval을이 취소 될 때까지 함수가 약 2 초마다 호출하게됩니다. 함수 내에서 setInterval에 대한 또 다른 호출을 포함하면 호출 할 때마다 다른 호출 순서가 설정되므로 결과적으로 수천 개의 인스턴스가 실행되고 각각은 카운터를 증가시킵니다.
그래서 하나 setInterval을 하나의 호출을 사용하거나 기능은 한 번 실행 의 setTimeout을 사용하여 자신을 호출해야합니다. 또한 문자열을 전달하면 함수 생성자를 호출하고 실질적으로 eval에 대한 호출이므로 시스템 리소스 측면에서 불필요한 비싸지 만 setInterval 및 setTimeout에 함수 참조를 전달하는 것이 좋습니다.
var counter = 0;
function punch() {
// ...
counter++;
}
setInterval(punch, 2000);
var counter = 0;
function punch() {
// ...
counter++;
hit = setTimeout(punch, 2000);
}
punch();
또는
는
의 장점은 당신이 다른 논리에 따라 지연을 변화, 또는 타임 아웃을 취소하지 않고 순서를 중지 쉽게 할 수 있다는 것입니다에서는 setTimeout. 일 것을
참고
hit = setInterval(...);
가 의 값 충돌이 간격을 취소하는 데 사용할 수있는 인덱스이고, 거기서 보낸 정의되지 펀치 (의해 반환 된 값이 아닌 return 문이 아닙니다.)
에 대한 읽기 당신은) (당신이 펀치를 호출 할 코드에서 찾을 수 없습니까 내부에 간격을 설정하여? 매 2 초마다 1, 2, 4, 8, ... 실행중인 펀치() 인스턴스가 있습니다. – Johnny