setTimeout을 사용한 예기치 않은 즉시 함수 실행
특정 간격으로 함수 호출을 예약하려고 하면 사용자에게 setTimeout이 발생하는 문제가 발생합니다. function은 지정된 시간 초과에도 불구하고 즉시 함수를 실행합니다. doRequest 함수는 10초 간격으로 호출해야 하는데 바로 호출되고 있습니다.
이렇게 즉시 실행되는 원인은 setTimeout 함수가 호출되는 방식에 있습니다. 다음 코드 조각은 문제를 보여줍니다.
setTimeout(doRequest(url, proxys[proxy]), proxytimeout);
이 코드에서 doRequest 함수는 setTimeout의 첫 번째 인수로 전달되지만 함수는 예약되지 않고 즉시 실행됩니다.
해결책:
이 문제를 해결하고 doRequest가 예약되었는지 확인하려면 setTimeout을 사용하는 세 가지 대체 방법이 있습니다.
함수 이름을 문자열로 전달:
setTimeout('doRequest(' + url + ',' + proxys[proxy] + ')', proxytimeout);
익명 함수 사용:
(function(u, p, t) { setTimeout(function() { doRequest(u, p); }, t); })(url, proxys[proxy], proxytimeout);
함수 이름을 먼저 전달한 다음 매개변수를 전달합니다.
setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
위 내용은 내 setTimeout 함수가 즉시 실행되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!