>  기사  >  웹 프론트엔드  >  내 setTimeout 함수가 즉시 실행되는 이유는 무엇입니까?

내 setTimeout 함수가 즉시 실행되는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-11 17:31:03644검색

Why Does My setTimeout Function Execute Immediately?

setTimeout을 사용한 예기치 않은 즉시 함수 실행

특정 간격으로 함수 호출을 예약하려고 하면 사용자에게 setTimeout이 발생하는 문제가 발생합니다. function은 지정된 시간 초과에도 불구하고 즉시 함수를 실행합니다. doRequest 함수는 10초 간격으로 호출해야 하는데 바로 호출되고 있습니다.

이렇게 즉시 실행되는 원인은 setTimeout 함수가 호출되는 방식에 있습니다. 다음 코드 조각은 문제를 보여줍니다.

setTimeout(doRequest(url, proxys[proxy]), proxytimeout);

이 코드에서 doRequest 함수는 setTimeout의 첫 번째 인수로 전달되지만 함수는 예약되지 않고 즉시 실행됩니다.

해결책:

이 문제를 해결하고 doRequest가 예약되었는지 확인하려면 setTimeout을 사용하는 세 가지 대체 방법이 있습니다.

  1. 함수 이름을 문자열로 전달:

    setTimeout('doRequest(' + url + ',' + proxys[proxy] + ')', proxytimeout);
  2. 익명 함수 사용:

    (function(u, p, t) {
        setTimeout(function() { doRequest(u, p); }, t);
    })(url, proxys[proxy], proxytimeout);
  3. 함수 이름을 먼저 전달한 다음 매개변수를 전달합니다.

    setTimeout(doRequest, proxytimeout, url, proxys[proxy]);

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

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