ProgramingTip

setTimeout을 사용할 때 메소드가 즉시 실행되는 이유는 무엇입니까?

bestdevel 2020. 12. 14. 20:35
반응형

setTimeout을 사용할 때 메소드가 즉시 실행되는 이유는 무엇입니까?


이 질문에 이미 답변이 있습니다.

를 사용하여 간단한 코드를 작성 setTimeout하지만 setTimeout예상 시간을 기다리지 않고 코드가 즉시 실행됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

setTimeout(testfunction(), 2000);

함수를 즉시 호출하고 반환 값을 예약합니다.

사용하다 :

setTimeout(testFunction, 2000);
                       ^

고시 : 괄호 없음.


괄호 제거

setTimeout(testfunction(), 2000);

함수에 매개 변수를 보내려면 원하는 함수를 호출 할 익명 함수를 만들 수 있습니다.

setTimeout(function() {

    testfunction('hello');

}, 2000);

편집하다

setTimeout의 첫 번째 제안 변수는 누군가를 보내도록 제안했습니다. 나는 선호하는 것이지 말고 setTimeout 첫 번째 선호하는 변수로 보내지 않는 것이 좋습니다. eval 함수가 사용되기 때문입니다. 이것은 나쁜 습관이며 피해야합니다.


testfunction 이름 뒤의 괄호를 제거합니다.

setTimeout(testfunction, 2000);

그 이유는 setTimeout의 첫 번째 인수가 함수 의 반환 값이 아니라 함수 참조 집 하기 때문 입니다. 코드에서는 testfunction즉시 호출되고 반환 값은 setTimeout으로 전송됩니다.


글쎄, 당신은 답을 얻었을 가능성이 있습니다. 필요한 시간 후에 함수를 호출 할 수있는 두 가지 방법이 있습니다.

1. setTimeout ( "FUNC_NAME () ', TIME_IN_MS);
여기서 큰 따옴표 안의 FUNC_NAME은 TIME_IN_MS 밀리 초 후에 호출하려는 함수입니다. 따옴표를 넣지 언어 자바 펼쳐가 해석되는 동안 함수가 즉시 실행되고 당신의 목적은 실패 할
2. setTimeout (function () {FUNC_NAME ()}, TIME_IN_MS); 여기서 인터프리터가 문장을 건너 뛰고 실행 가능하게 여기에 따옴표를 넣어야합니다.
시간을 평가하는 대신 일정 시간 후에 생성됩니다.

감사합니다 shaILU

참고 URL : https://stackoverflow.com/questions/7137401/why-is-the-method-executed-immediately-when-i-use-settimeout

반응형