Program Tip

2 초 동안 자바 스크립트 코드 실행을 일시 중지하는 방법

programtip 2020. 10. 13. 19:07
반응형

2 초 동안 자바 스크립트 코드 실행을 일시 중지하는 방법


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

2 초 동안 실행을 중지하고 싶습니다. 이렇지 만 이제 코드 블록을 따릅니다.

<html>
   <head>
      <title> HW 10.12 </title>
      <script type="text/javascript">
         for (var i = 1; i <= 5; i++) {
             document.write(i);
             sleep(2); //for the first time loop is excute and sleep for 2 seconds        
         };
      </script>
   </head>
   <body></body>
</html>

첫 번째 시간 루프는 실행되고 2 초 동안 수면됩니다. 2 초 동안 실행을 중지하고 싶습니까?


자바 스크립트는 단일 스레드이므로 수면 기능은 스레드를 차단하므로 본질적으로 수면 기능이 없어야합니다. setTimeout스레드를 차단하지 않고 나중에 실행할 이벤트를 큐에 게시하여이 문제를 해결하는 방법입니다. 그러나 진정한 수면 기능을 원한다면 다음과 같이 작성할 수 있습니다.

function sleep(miliseconds) {
   var currentTime = new Date().getTime();

   while (currentTime + miliseconds >= new Date().getTime()) {
   }
}

참고 : 위 코드는 권장 되지 않습니다.


실행을 일시 중지하는 (안전한) 방법은 없습니다. 그러나 setTimeout을 사용하여 다음과 같이 할 수 있습니다 .

function writeNext(i)
{
    document.write(i);

    if(i == 5)
        return;

    setTimeout(function()
    {
        writeNext(i + 1);

    }, 2000);
}

writeNext(1);

setTimeout이 작업을 수행 하는 사용할 수 있습니다.

function myFunction() {
    // your code to run after the timeout
}

// stop for sometime if needed
setTimeout(myFunction, 5000);

이 링크 는 도움이 될 수 있습니다.

함수 중간에 잠을 원할 때마다 setTimeout ()을 사용하도록 리팩토링했습니다.


절차 적 언어로하는 것처럼 코드 실행을 중지 할 수있는 방법은 없습니다. 대신 setTimeout 및 몇 가지 속임수를 사용하여 매개 변수화 된 시간 제한을 얻을 수 있습니다.

for (var i = 1; i <= 5; i++) {
    var tick = function(i) {
        return function() {
            console.log(i);
        }
    };
    setTimeout(tick(i), 500 * i);
}

데모 : http://jsfiddle.net/hW7Ch/

참고 URL : https://stackoverflow.com/questions/16623852/how-to-pause-javascript-code-execution-for-2-seconds

반응형