setInterval / clearInterval
let num = 1; const interval = setInterval(()=>{ console.log(num++); },1000); setTimeout(()=>{ console.log('Time out!'); clearInterval(interval); },6000);
콜백 함수 우선 순위
console.log('code1'); setTimeout(()=>{ console.log('setTimeout 0'); }, 0); console.log('code2'); setImmediate(()=>{ console.log('setImmediate'); // setTimeout 과 거의 동시에 동작 }); console.log('code3'); process.nextTick(()=>{ console.log('process.nextTick'); // 우선 순위 제일 높음 }) /* code1 code2 code3 process.nextTick setTimeout 0 setImmediate */
타이머와 콜스택의 연관
console.time('timeout 0'); setTimeout(()=>{ console.timeEnd('timeout 0'); console.log('setTimeout 0'); }, 0); // for(let=i;i<1000;i++){} /* timeout 0 : 2.318ms setTimeout 0 */
거의 2ms 가 걸린걸 볼 수 있는데, 여기서 setTimeout을 0초로 해도 정확하게 0초가 보장되지않는 다는 것을 알 수 있다.
왜냐하면 실제로 콜백함수가 수행되기위해서는 콜스택이 빌때까지 기다려야하므로 , 이것보다 더 많은 시간이 걸릴 수 있다. (만약 뒤에 for문이 있다면 더 오랜 시간이 걸릴 수 있음)