103

実行を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 秒間停止したいですか?

4

5 に答える 5

138

Javascript はシングル スレッドであるため、本来、スリープするとスレッドがブロックされるため、スリープ機能はありません。setTimeoutスレッドをブロックせずに後で実行されるようにイベントをキューに投稿することで、これを回避する方法です。しかし、真のスリープ機能が必要な場合は、次のように記述できます。

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

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

注:上記のコードは推奨されません

于 2013-05-18T12:11:40.093 に答える