JavaScript

[JavaScript] setTimeout의 delay는 음수도 가능할까?

JayLee 2021. 1. 21. 15:10
반응형

Pixabay로부터 입수된 anncapictures님의 이미지 입니다.  

 

일정 시간 이후에 특정 구문을 실행하기 위해 setTimeout을 사용합니다. 그리고 가끔은 함수 호출 순서를 바꿔주기 위해 setTimeout의 delay에 0을 사용하기도 합니다. 그렇다면 delay를 음수로 준다면 어떤 일이 발생할까요?

 

일반적으로 delay 어떤 딜레이 값을 사용했다고 하더라도 최소 지연시간보다 작다면 최소지연 시간으로 맞춰지게 됩니다. HTML5 스펙에는 최소 지연 시간을 4ms로 명시하고 있습니다. 즉, 음수로 delay를 지정했더라도 최소 지연 시간 이후에 callback이 실행된다는 것입니다.

 

단, 예외가 있습니다. Stackoverflow 답변에 따르면 음수로 입력했을 때, 모든 브라우저에서 callback의 실행을 보장하진 않는다고 합니다.  Internet Explorer 8 혹은 보다 낮은 버전에서는 callback이 실행되지 않을 수 있으니 유의해야합니다.

 

참고:

developer.mozilla.org/ko/docs/Web/API/WindowTimers/setTimeout

 

WindowTimers.setTimeout() - Web API | MDN

WindowTimers.setTimeout() Jump to sectionJump to section 타이머가 만료된 뒤 함수나 지정된 코드를 실행하는 타이머를 설정합니다.var timeoutID = window.setTimeout(func[, delay, param1, param2, ...]); var timeoutID = window.setTim

developer.mozilla.org

stackoverflow.com/questions/8430966/is-calling-settimeout-with-a-negative-delay-ok

 

Is calling setTimeout with a negative delay ok?

The following snippet sets a timeout that I'd like to last at least a second: var currentTimeMillis = new Date().getTime(); // do stuff... var sleepTime = 1000 - (new Date().getTime() -

stackoverflow.com

 

반응형