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

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

Barbara Streisand
Barbara Streisand원래의
2024-12-13 05:43:18673검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.