[javascript] JavaScript를 사용하여 특정 지연 후 스크립트 실행

jQuery와 비슷한 JavaScript 메소드가 있습니까 ( delay()또는 wait()특정 시간 동안 스크립트 실행을 지연시키기 위해)?



답변

다음이 있습니다 :

setTimeout(function, milliseconds);

함수가 실행 된 후 전달 될 수있는 함수.

setTimeout()방법을 참조하십시오 .


답변

다른 사람들이 말한 것에 덧붙여서 setTimeout: 나중에 매개 변수가있는 함수를 호출하려면 익명의 함수 호출을 설정해야합니다.

나중에 호출하려면 함수를 인수로 전달해야합니다. 사실상 이것은 이름 뒤에 괄호가없는 것을 의미합니다. 다음은 한 번에 경고를 호출하고 ‘Hello world’를 표시합니다.

var a = "world";
setTimeout(alert("Hello " + a), 2000);

이 문제를 해결하려면 Flubba처럼 함수 이름을 입력하거나 익명 함수를 사용할 수 있습니다. 매개 변수를 전달해야하는 경우 익명 함수를 사용해야합니다.

var a = "world";
setTimeout(function(){alert("Hello " + a)}, 2000);
a = "Stack Overflow";

그러나 해당 코드를 실행하면 2 초 후에 팝업에 ‘Hello Stack Overflow’가 표시됩니다. 변수 a의 값이 2 초 동안 변경 되었기 때문입니다. 2 초 후에 ‘Hello world’라고 말하려면 다음 코드 스 니펫을 사용해야합니다.

function callback(a){
    return function(){
        alert("Hello " + a);
    }
}
var a = "world";
setTimeout(callback(a), 2000);
a = "Stack Overflow";

2 초간 기다린 후 ‘Hello world’가 팝업됩니다.


답변

조금만 확장하면 … setTimeout호출 에서 직접 코드를 실행할 수 있지만 @patrick가 말한 것처럼 일반적으로 이와 같은 콜백 함수를 할당합니다. 시간은 밀리 초입니다

setTimeout(func, 4000);
function func() {
    alert('Do stuff here');
}


답변

정말로 (동기화) 블로킹 (동기식) delay기능을 원한다면 다음과 같이하십시오.

<script type="text/javascript">
    function delay(ms) {
        var cur_d = new Date();
        var cur_ticks = cur_d.getTime();
        var ms_passed = 0;
        while(ms_passed < ms) {
            var d = new Date();  // Possible memory leak?
            var ticks = d.getTime();
            ms_passed = ticks - cur_ticks;
            // d = null;  // Prevent memory leak?
        }
    }

    alert("2 sec delay")
    delay(2000);
    alert("done ... 500 ms delay")
    delay(500);
    alert("done");
</script>


답변

setTimeout 을 사용 하고 콜백 함수를 전달해야합니다. 자바 스크립트에서 절전 모드를 사용할 수없는 이유는 전체 페이지가 그 동안 아무것도하지 못하도록 차단했기 때문입니다. 좋은 계획이 아닙니다. Javascript의 이벤트 모델을 사용하고 행복을 유지하십시오. 싸우지 마!


답변

window.setInterval () 을 사용 하여 일정한 간격으로 일부 코드를 반복적으로 실행할 수도 있습니다 .


답변

이전 의견을 추가하기 위해 다음과 같이 말하고 싶습니다.

setTimeout()JavaScript 의 함수는 스크립트 자체의 실행을 일시 중지하지 않고 단지 나중에 컴파일러에게 코드를 실행하도록 지시합니다.

JavaScript에 내장 된 실행을 실제로 일시 정지 할 수있는 기능은 없습니다. 그러나 함수를 사용하고 Date()필요한 시간 간격을 추가 하여 시간에 도달 할 때까지 무조건 루프와 같은 기능을 수행하는 고유 한 함수를 작성할 수 있습니다 .