setTimeout을 사용하여 지연된 함수를 실행하려고 했으나 즉시 실행되는 경우, 문제는 함수가 setTimeout에 전달되는 방식에 있습니다.
이 문제를 해결하려면 세 가지 접근 방식이 있습니다. 원하는 지연으로 실행되는지 확인하세요.
인수를 개별적으로 전달:
setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
이 형식은 함수를 먼저 전달한 다음 시간 초과를 전달합니다. 그리고 함수의 인수.
리터럴 문자열 사용:
setTimeout('doRequest('+url+','+proxys[proxy]+')', proxytimeout);
여기서 실행 시 평가되는 리터럴 문자열이 제공됩니다.
익명함수 폐쇄:
(function(u, p, t) { setTimeout(function() { doRequest(u, p); }, t); })(url, proxys[proxy], proxytimeout);
이 접근 방식에는 의도한 함수를 호출하는 익명 함수가 포함됩니다. 클로저는 함수에 사용된 값이 루프 전체에서 일관되게 유지되도록 보장합니다.
이러한 방법 중 하나를 채택하면 지정된 지연을 사용하여 doRequest 함수 실행을 효과적으로 예약할 수 있습니다.
위 내용은 'setTimeout' 함수가 지연 후가 아니라 즉시 실행되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!