나는 여기에이 코드를 가지고 : 내 컴퓨터에서JavaScript setTimeout이 너무 정확하지 않은 이유는 무엇입니까?
var date = new Date();
setTimeout(function(e) {
var currentDate = new Date();
if(currentDate - date >= 1000) {
console.log(currentDate, date);
console.log(currentDate-date);
}
else {
console.log("It was less than a second!");
console.log(currentDate-date);
}
}, 1000);
, 그것은 항상 콘솔 출력에서 1000 올바르게 실행됩니다. Interestedly 다른 컴퓨터에서 같은 코드는 제한 시간 콜백 초 미만에서 시작 I (예, Tock에 대한)이 부정확를 해결 라이브러리의 존재를 알고
980 사이 998 currentDate - date
의 차이입니다.
기본적으로 내 질문은 : setTimeout
이 지정된 지연 시간에 실행되지 않기 때문에 이유가 무엇입니까? 컴퓨터가 너무 느려서 브라우저가 자동으로 느려짐에 적응하려고 시도하고 이전에 이벤트를 발생시킬 수 있습니까?
PS : A에 따라
:이 정보를 잘못 해석하고있는 경우
1-2 밀리 초 (1000 밀리 초 이상)의 차이는 아마도 지터 때문일 수 있습니다. 그게 왜 틀렸다고 생각하니? 1 %의 1/5입니다. –
John Resig가 다음 기사에 대해 좋은 기사를 썼습니다. http://ejohn.org/blog/accuracy-of-javascript-time/ – rorypicko
@ElliottFrisch "1 초"라고 말하면 정확하지 않기 때문에 정확하지 않습니다. "1 초". 그 이상도 이하도 아닌. –