javascript의 setTimeout() 및 setInterval()

3237 단어
이전에 논의한 것처럼 setTimeout()은 타이머를 시작하고 작업 대기열로 이동하여 호출 스택이 빌 때까지 기다립니다. 이것은 모두 이벤트 루프 작동의 일부입니다.

시간 초과()



예제 코드:

function sayHi() {
  alert('Hello');
}

setTimeout(sayHi, 10000);


여기서 sayHi 기능은 10000ms의 지연 후에 실행됩니다.
setTimeout() 삽입된 시간 이후에 정확하게 콜백 함수를 실행할 필요는 없습니다.

호출 스택이 비어 있을 때까지 기다리기 때문에 기다리는 동안 타이머가 이미 만료된 경우일 수 있습니다. 즉, 언급된 시간이 아니라 잠시 후 실행됩니다.

따라서,


function sayHi() {
  alert('Hello');
}

setTimeout(sayHi, 0);
.
.
.


여기에서도 전체 프로그램이 실행되고 호출 스택이 비워질 때까지 대기합니다.

작업 대기열에 남아 있으면 스레드 차단을 피할 수 있습니다. 그래서:
  • 적어도 콜백을 실행하기 위해 언급된 시간 동안 기다립니다.
  • 기본 스레드를 차단하지 않습니다.

  • setInterval()



    정지할 때까지 주어진 간격 후에 콜백 함수를 계속 실행합니다.

    let timerId = setInterval(() => console.log('attention'), 2000);
    
    setTimeout(() => { clearInterval(timerId); console.log('stop'); }, 5000);
    




    여기서 'attention'은 2초마다 출력되며 stop이 출력되는 5초 후 아래의 clearInterval()를 사용하여 해제됩니다.

    Learn more about concurrency in javascript and how can setTimeout(0) is used.
    🌟

    좋은 웹페이지 즐겨찾기