여기에 큰 놀라움이 없습니다. 작업에는 시간이 걸리지만 setInterval는 일정에 충실합니다. 자바 스크립트의 타이밍 함수가 그다지 신뢰할 수 없기 때문입니다. 실제로 얼마나 신뢰할 수 있는지는 브라우저에 따라 다르므로 시간에 민감한 작업을 수행하려는 경우 실제 Date 개체와 동기화해야합니다. 나중에 그 예가 살펴보겠습니다. 자바 스크립트는 창 개체의 편리한 몇 가지 방법을 제공합니다 : setTimeout() 및 setInterval(). 이렇게 하면 나중에 자바 스크립트 코드 의 조각을 실행할 수 있습니다. 이 자습서에서는 이러한 두 메서드의 작동 방식을 설명하고 몇 가지 실용적인 예제를 제공합니다. 스크립트 의 흐름 외부 작업에 대 한 너무 많은. 이 예제는 AJAX 호출이었지만 일반적인 원칙은 모든 종류의 이벤트 처리에 적용됩니다. 내가 언급 한 다른 것은 CPU 집약적 인 작업이며, 몇 가지 미묘한 자르기 시작 됩니다 다음 지점에 바로 저를 제공합니다 : 이것은 카운트 다운과 10 초 후 닫는 자바 스크립트 자동 팝업의 예입니다, 마지막 섹션의 예에서 내가 이끄는 당신은 타이머 콜백을 상상하는 그는 매 초마다 새로운 메일을 확인하기 위해 서버에 트러지하지 않는 경우 좋은 채찍질을 얻는이 가난한 사람으로, 하지만 당신은 AJAX 호출이 두 번째 후 반환되지 않은 경우, setInterval는 조금 상관하지 않습니다 것으로 나타났습니다 수 있습니다 – 사실 , 그것은 심지어 알지 못합니다 – 그리고 다른 하나를 보내십시오 (동시에 많은 AJAX 요청이 있을 수 있습니다). 그래서, 그것은 더 많은 그 사람의 전체 군대가 처럼, 그리고 setInterval 는 그것에 대해 생각 조차 하지 않고 매 초마다 전투에 그들 중 하나를 보냅니다., 반면 setTimeout 루프 반환 하 고 제대로 다음을 보내기 전에 그들의 각 하나를 기다릴 것 이다 .

위의 간단한 예제에서는 setTimeout() 호출에 JavaScript 경고 상자에 대한 전체 코드를 포함했습니다. 일반적으로 함수를 호출합니다. 다음 예제에서는 단추를 클릭하면 단추의 텍스트 색상을 빨간색으로 변경하는 함수가 호출됩니다. 동시에 이 함수는 setTimeout()을 사용하여 텍스트 색상을 2초 후에 다시 검은색으로 설정하는 시간 초과 함수를 설정합니다. 페이드 아웃 전환이 완전히 완료되었습니다. 둘째: 좋아, 우리는 setTimeout 루프가 엄격한 일정에 따라 작동하지 않는 방법을 그 아웃 오브 플로우 AJAX 예에서 본 적이 있지만, setInterval는 끊임없는 암캐 반면, 심지어 느린 작업호흡을 제공합니다. 흐름 내 작업에서 어떻게 작동하는지 살펴보겠습니다. 버튼을 누르면 중지하라고 말할 때까지 다음 코드에 “Woo!” 및 “Yay!” 가 임의로 표시됩니다. (나는 간단한 예를 말했다, 하지 유용한 하나.) 우리는 또한 wooYay () 함수 내에서 setTimeout () 기능을 사용하여 “Woo!” 또는 “Yay!” 반 초 후에 사라지게한 방법을 확인하십시오 : 나는 훨씬 더 나은 편집 도구를 가지고 있기 때문에 내 포럼에서 예제와 함께 전체 답변을 작성할 것입니다.

er 비좁은 포럼 게시물보다 나는 여기에 기사에 대한 링크를 제공 할 것입니다. 빠른 비교 op-wise http://jsperf.com/anonymous-vs-named-settimeout-in-a-loop 얻기 위해 jsperf를 통해이 실행, 익명은 약간 빠르다 (루프의 수를 올리는 가치가있을 수도 있지만) 하지만 익명은 또한 유지에 우위를 가지고 네임 스페이스 깔끔한, 적어도 나를 위해, 약간 더 우아한 솔루션입니다. (다음 코드 예제에서는 jQuery 구문을 사용하여 AJAX 예제를 좀 더 간결하게 만듭니다.