2012-07-09 2 views
0

이 window.setInternal을MDN에서 setInterval 예제 var intervalID는 어떻게 작동합니까?

의 모질라 개발자 네트워크의 예는
var intervalID = window.setInterval(func, delay[, param1, param2, ...]); 
var intervalID = window.setInterval(code, delay); 

(여기에서 찾을 수있는 : https://developer.mozilla.org/en/DOM/window.setInterval)되어

나는 내 질문에 이렇게 알고리즘 이러한 유형의 컴파일 된 자바 프로그래밍에 더 사용 해요 is :

intervalID는 어떻게 작동합니까? 배후에 어떤 종류의 재귀 함수가있는 것처럼 보입니다.하지만 그것은 완전한 추측입니다. 구조가 어떻게되고 구조가 (아마도 꽤 큰) intervalID로 저장되어 clearInterval(intervalID)을 기다리고 있습니까?

+1

모든 내용이 귀하가 보낸 링크에서 철저히 설명되어 있습니다. 같은 함수를 반복적으로 호출하는 것 사이의 재귀가 없습니다. – NimChimpsky

+1

'intervalID'는 특정 타이머에서'clearInterval'을 호출 할 수있는 불투명 식별자입니다. 그것은 단지 숫자입니다. – Jon

+0

LOL, OK 그때 간단! 둘 다 감사합니다. –

답변

1

파이어 폭스 브라우저에서 작동하는 방식을 알고 싶다고 가정합니다. 각 브라우저에는 동일한 메소드가 구현되어 있습니다. 구현은 nsGlobalWindow::SetTimeoutOrInterval()에서 찾을 수 있으며 실제로는 매우 간단합니다. 각 창에는 대기 시간 초과 목록이 있으며 window.setInterval()을 호출하면 timeout structure이 새로 작성되어 해당 목록에 추가됩니다. timeout 구조에는 콜백을 호출해야 할 때마다 창에 알릴 timer object에 대한 참조가 들어 있습니다. 그리고 숫자가 mPublicId 인 회원 번호가 있습니다. 생성 된 새로운 시간 초과마다 증가하고 setInterval()에 의해 반환됩니다. clearInterval()으로 전화하면 목록에서 일치하는 ID로 시간 초과를 찾아 제거합니다.

+0

좋아요! 말하자면, '육감적 인'응답을 원했습니다. :) –

1

intervalID은 어떤 간격이 진행되고 있는지 식별하는 setInterval 함수가 반환 한 숫자입니다.

마치 함수와 간격의 튜플에 숫자의지도가있는 것처럼 상상해보십시오. 이것은 아마도 그것이 실제로 구현 어떻게하지,하지만 난 그것이 주어진 간격으로 계속 실행됩니다

11: [function() { ... }, 500], 
27: [function() { ... }, 230], 
875: [function() { ... }, 650] 
... 

지도에서 각 기능을 작동 할 수 방법에 대한 정신 모델로 적절하게 역할을 생각합니다. clearInterval을지도의 항목에 해당하는 ID로 호출하면 해당 항목이 삭제되고 해당 기능의 실행이 중지됩니다.