JavaScript は続行する前にスリープ/待機します [重複] 質問する

JavaScript は続行する前にスリープ/待機します [重複] 質問する

スリープ/待機関数を追加する必要がある JavaScript コードがあります。実行しているコードはすでに関数内にあります。例:

function myFunction(time)
{
    alert('time starts now');
    //code to make the program wait before continuing
    alert('time is up')
}

解決策としては次のようなものがあると聞きました

setTimeout

しかし、この場合どのように使用すればよいかわかりません。

私のサーバーは PHP をサポートしていないため、PHP は使用できませんが、jQuery を使用すれば問題ありません。

ベストアンサー1

JSにはスリープ機能はありませんが、タイムアウトを設定する()または間隔を設定する()機能。

一時停止後に実行する必要があるコードをsetTimeout()コールバックに移動できる場合は、次の操作を実行できます。

//code before the pause
setTimeout(function(){
    //do what you need here
}, 2000);

ここで例を参照してください:http://jsfiddle.net/9LZQp/

これはスクリプトの実行を停止しませんが、setTimeout()非同期関数であるため、このコードは

console.log("HELLO");
setTimeout(function(){
    console.log("THIS IS");
}, 2000);
console.log("DOG");

コンソールに次のように表示されます:

HELLO
DOG
THIS IS

DOGがTHIS IS の前に印刷されていることに注意してください)


次のコードを使用して、短時間のスリープをシミュレートできます。

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

1秒間スリープしたい場合は、次のようにします。

sleep(1000);

例:http://jsfiddle.net/HrJku/1/

このコードにより、スクリプトがn ミリ秒間ビジー状態になることに注意してください。これにより、ページ上の Javascript の実行が停止するだけでなく、ブラウザの実装によっては、ページが完全に応答しなくなり、ブラウザ全体が応答しなくなる可能性があります。言い換えると、これはほとんどの場合間違った行為です。

おすすめ記事