スリープ/待機関数を追加する必要がある 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 の実行が停止するだけでなく、ブラウザの実装によっては、ページが完全に応答しなくなり、ブラウザ全体が応答しなくなる可能性があります。言い換えると、これはほとんどの場合間違った行為です。