> 웹 프론트엔드 > JS 튜토리얼 > setTimeout()은 매개변수에 지정된 시간보다 더 많은 시간이 걸립니다.

setTimeout()은 매개변수에 지정된 시간보다 더 많은 시간이 걸립니다.

Barbara Streisand
풀어 주다: 2025-01-04 21:48:40
원래의
1013명이 탐색했습니다.

setTimeout() takes more time than given time in param

setTimeout은 핵심 JavaScript의 일부가 아닙니다. 네, 당신이 들은 게 맞습니다. 브라우저(웹 환경)에서 제공하는 웹 API 또는 서버 측 환경의 Node.js API의 일부입니다.
우리 모두 알고 있듯이 setTimeout 메소드는 CB 함수를 매개변수로 사용합니다. 다른 매개변수는 CB가 실행되어야 하는 시간(ms)입니다.
하지만 잠깐만요. setTimeout이 항상 주어진 시간 매개변수에 실행될 필요는 없습니다. 호출 스택이나 메인 스레드가 코드에 의해 차단되면 차단 코드가 완료된 후 호출 스택에서 setTimeout이 즉시 실행됩니다. 그때까지는 브라우저 콜백 대기열이나 작업 대기열에 계속 저장되어 있습니다.

console.log("HELLO");
setTimeout(() => console.log("Timeout executed"), 5000); //should be execute after 5sec
let start = new Date().getTime();
let end= start;
while (end < start + 10000){
  end= new Date.getTime();
} //This loop will block the main thread for 10sec
 console.log("Time Expire");

//output---
//HELLO
//Time Expire
//Timeout executed  (Immediately just after Time expire)
로그인 후 복사

setTimeout에 0ms 시간을 제공하면 어떻게 될까요? 일반적인 코드 실행처럼 순차적으로 실행되나요.
대답은 '아니오'입니다. 호출 스택에서 즉시 먼저 실행되는 다른 함수와 달리 setTimeout은 먼저 CB 대기열로 이동하기 때문입니다.

위 내용은 setTimeout()은 매개변수에 지정된 시간보다 더 많은 시간이 걸립니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿