2013-06-21 3 views
3

자바 스크립트 스레드를 한 달에 한 번 실행하는 사례가 있습니다. 그러나 우리가 관찰하는 것은 setinterval 기능에 대해 3.5 주 지연을 제공하면이를 존중하지 않으며 1 초에 한 번 일정을 잡기 시작하는 것입니다. 그게 버그 야? 지연을주기위한 최대 한도가 있습니까?자바 스크립트 setInterval 지연을 설정 하시겠습니까?

재미있게도 setTimeOut과 똑같이 작동합니다. - 책임을 질 수있는 곳 연산을 부호있는 32하지만 만약

<!DOCTYPE html> 
<html> 
<body> 

<input type="text" id="clock" /> 
<script> 
    var int=setInterval(function(){clock()},1000*60*60*24*7*3.5); 
    function clock() 
    { 
     var d=new Date(); 
     var t=d.toLocaleTimeString(); 
     document.getElementById("clock").value=t; 
    } 
</script> 

<button onclick="int=window.clearInterval(int)">Stop</button> 

</body> 
</html> 
+1

'function() {clock()}'대신'clock'을 사용해도됩니다. – elclanrs

+0

setInterval을 사용하는 자바 스크립트에서 일부 버그가 발생할 수 있으므로 setTimeout을 사용하면 더 좋을 것입니다. – Givi

+0

가능한 복제본 [setInterval의 최대 지연은 얼마입니까?] (http://stackoverflow.com/questions/12633405/what-is-the -maximum-delay-for-setinterval) – K3N

답변

1
1000*60*60*24*7*3.5 = 0x7e2bce00 

은 0x80000000 무섭게 가까운, 궁금하다.

setIntervalsetTimeout에 대한 시간 제한은 모두 부호가있는 32 비트를 의미하는 long 값으로 정의됩니다. 어떻게 negativetimeout 가치가 대우 될지 불분명하다. WhatWG 사양에서

:

긴에서는 setTimeout (기능 처리기, 옵션 긴 시간 제한, 어떤 ... 인수); WebIDL 표준과

:

긴 타입은 다양한 [-2147483648 2147483647]의 값을 갖는 부호있는 정수 타입이다. ,

setTimeout 이후 작품 원하는 절반 기간의

대안 처리 기능의 끝에서 setInterval 그것을하고 다시 트리거를 사용하고를 사용

나는이 개 제안을 할 수있는 문제를 해결하려면 다른 모든 시간에 코드를 실행하려면 토글하십시오.

관련 문제