364

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

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

考えられる解決策には以下が含まれる可能性があると聞いたことがあります

setTimeout

しかし、この場合の使用方法がわかりません。

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

4

1 に答える 1

652

JS にはスリープ機能がなく、setTimeout()またはsetInterval()関数があります。

一時停止後に実行する必要があるコードを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 の実行が停止するだけでなく、ブラウザーの実装によっては、ページが完全に応答しなくなり、ブラウザー全体が応答しなくなる可能性があります。言い換えれば、これはほとんど常に間違ったことです。

于 2013-06-01T14:42:06.283 に答える