Javscript에서 제공하는 스케줄링 함수는 다음과 같다.
setTimeout
let id = setTimeout(()=>{
내용
}, 밀리초);
일정시간 ( = 내가 설정한 밀리초 ) 후에 콜백 함수를 실행해준다.
setTimeout 함수를 실행하면 타이머 식별자를 반환해줘서,
해당 타이머 식별자를 통해 예약되어 있는 setTieout 함수 실행을 취소 해 줄 수 있다.
clearTimout
clearTimeout(식별자 id);
위처럼 clearTimeout을 통해 취소해 줄 수 있다. 단, 취소가 되더라도 해당 식별자의 값은 null이 되지는 않는다.
setInterval
let id = setInterval(()=>{
내용
}, 밀리초);
일정시간 ( = 내가 설정한 밀리초 ) 마다 콜백 함수를 실행해준다.
setTimeout과 마찬가지로 함수를 실행하면 식별자를 반환해줘서 취소해 줄 수 있다.
clearInterval
clearInterval(식별자 아이디);
위처럼 clearInterval을 통해 취소해 줄 수 있다.
setInterval, 중첩 setTimeout 비교
setInerval 사용
let i=0;
serInterval(function(){
func(i++);
}, 100);
- setInterval을 사용하면 func 호출 사이의 지연 간격이 실제 명시한 간격(여기서는 100ms)보다 짧아진다.
- func을 실행하는 데 소모되는 시간도 지연 간격에 포함시키기 때문
- func 실행 시간이 명시한 간격보다 길어지면 함수 실행이 종료될 때까지 기다리고 종료되면 바로 다음 호출을 시작한다.
- 따라서 함수 호출에 걸리는 시간이 매번 delay 밀리 초보다 길면, 모든 함수가 한번에 쉼 없이 연속으로 호출된다.
중첩 setTimeout 사용
setTimeout을 재귀적으로 호출하면 setInterval을 쓰는 것처럼 사용할 수 있다.
let i = 1;
setTimeout(function run() {
func(i++);
setTimeout(run, 100);
}, 100);
- 중첩 setTimeout을 사용하면 명시한 지연( 여기서는 100ms )이 보장된다.
- 지연 간격이 보장되는 이유는 이전 함수의 실행이 종료(=완료)된 이후에 다음 함수 호출에 대한 계획이 세워지기 때문
'Javascript' 카테고리의 다른 글
[Javscript][Node.js] Worker Thread (0) | 2024.11.28 |
---|---|
[Javascript][Node.js] Express Session ( 세션 관리 ) (0) | 2024.09.18 |
[Javascript] 로그 ( Log ), 에러 처리 ( Error Handling ) 미들웨어 (0) | 2024.09.11 |
[Javascript] delete 연산자 ( object 속성 값 삭제 ) (0) | 2024.09.10 |
[Javascript] .env ( 환경 변수 읽어 오기 ) (0) | 2024.09.09 |