> 웹 프론트엔드 > JS 튜토리얼 > 'setTimeout' 함수가 지연 후가 아닌 즉시 실행되는 이유는 무엇입니까?

'setTimeout' 함수가 지연 후가 아닌 즉시 실행되는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-13 05:43:18
원래의
672명이 탐색했습니다.

Why is my `setTimeout` Function Executing Immediately Instead of After the Delay?

setTimeout 함수 호출 지연 문제

HTML 값 업데이트에 대해 5초 폴링 메커니즘을 구현하려고 할 때 사용자에게 예기치 않은 동작이 발생할 수 있음 여기서 setTimeout() 함수는 의도한 지연 이후가 아닌 즉시 호출됩니다. 이렇게 하면 원하는 시차를 둔 서버 요청을 방지할 수 있습니다.

원인:

이 문제는 setTimeout() 함수가 호출되는 잘못된 방식에서 발생합니다.

원본 코드:

setTimeout(GetUsersNumber(), 50000);
로그인 후 복사

설명:

JavaScript에서는 함수를 괄호 없이 객체로 정의할 수 있습니다. 그러나 함수를 호출하려면 함수 뒤에 괄호가 와야 합니다. 원래 코드에서는 GetUsersNumber() 함수가 함수 참조로 전달되지 않고 setTimeout() 내에서 즉시 호출됩니다.

해결책:

To 문제를 해결하려면 setTimeout()에서 함수 이름 뒤의 괄호를 제거하기만 하면 됩니다. 인수:

setTimeout(GetUsersNumber, 5000); // 5 seconds instead of 50
로그인 후 복사

이렇게 하면 setTimeout()이 GetUsersNumber 함수 개체 자체에 대한 참조를 캡처하여 지연이 완료되면 함수를 호출할 수 있습니다.

위 내용은 'setTimeout' 함수가 지연 후가 아닌 즉시 실행되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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