setTimeout 과 setInterval 을 이용한 호출 스케쥴링
-
setInterval(func, delay, …args), setTimeout(func, delay, …args) 은 delay 밀로추 후 func 를 규칙적으로, 또는 한번(스케쥴링) 실행하게 해줌
-
setInterval 은 인수로 할당 받은 함수 호출 시 this에 window 할당
-
setInterval/setTimeout 에 함수 넘길 때 참조 값을 받도록 정의되어 있어 반환문 만 넘겨줘야 함
-
setInterval/setTimeout 은 타이머 식별자 반환 됨.
-
setInterval/setTimeout 호출하고 반환 값 clearInterval/clearTimerout 에 넘겨주면 스케쥴링 취소
-
alert 창 떠있어도 setInterval/setTimeout 의 타이머는 멈추지 않음
-
setInterval 은 함수를 실행하는 데 걸리는 시간도 지연 간격에 포함
-
중첩 setTimeout 사용 시 이전 함수의 실행이 종료된 이후에 다음 함수 호출에 대한 계획이 세워지기 때문에 지연 간격 보장해줌. setInterval 사용한 것 보다 유연하게 코드 작성 가능(내부에 코드 처리)
-
setInterval/setTimeout 에 인자 넘길 시 함수에 대한 내부 참조가 새롭게 만들어 지므로 가비지 컬렉션 대상 안 되므로 스케쥴링 할 필요 없어진 함수는 아무리 작더라도 취소해야 메모리 누수 없어짐
-
대기 시간 0인 setTimeout(func, 0) 혹은 setTimeout(func) 사용 시 ‘현재 스크립트 실행 완료 후’ 가능한 한 빠르게 원하는 함수 호출
-
지연 없이 중첩 setTimeout/setInterval 에서 호출 5회 이상 이뤄질 시 4밀리 초 이상의 지연 간격 강제로 더해짐. 브라우저(Node.js 는 보장)만 적용되며 하위 호환성 위해 유지
-
스케쥴링 메서드 에서 명시한 지연 간격 보장되지 않을 수 있다는 점에 유의