1. ホーム
  2. javascript

[解決済み] JavaScriptのスリープ/続行前の待ち時間[重複]について

2022-03-15 07:10:36

質問

私は、スリープ/ウェイト関数を追加する必要があるJavaScriptコードを持っています。私が実行しているコードは、例えば、すでに関数の中にあります。

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

などが考えられると聞いたことがあります。

setTimeout

が、この場合、どう使えばいいのかよくわかりません。

jQueryを使えばいいのですが、サーバーがPHPに対応していないため、PHPは使えません。

どのように解決するのですか?

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

(ただし ドッグ の前に印刷されます。 これは )


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

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