Javascriptコードに約100ミリ秒の遅延を追加する必要がありますが、window
オブジェクトのsetTimeout
関数を使用したくないため、ビジーループを使用したくありません。誰にも何か提案はありますか?遅延をJavaScriptに入れよう
答えて
は残念ながら、setTimeout()
は、UIをブロックすることなく、スクリプトの実行を一時停止するだけ信頼できる道(いない唯一の方法が、唯一信頼できる方法)です。
それは、ハードを実際に使用することはありません代わりに、これを書いている:
var x = 1;
// Place mysterious code that blocks the thread for 100 ms.
x = x * 3 + 2;
var y = x/2;
あなたはそれをこのように書き換えることsetTimeout()
を使用します。
var x = 1;
var y = null; // To keep under proper scope
setTimeout(function() {
x = x * 3 + 2;
y = x/2;
}, 100);
私はsetTimeout()
を使用すると、より多くの思考を伴うことを理解し望ましいsleep()
機能ですが、残念ながら後者は存在しません。このような機能を実装しようとする多くの回避策があります。使用中のループを使用するもの:
残念ながら、これらは回避策であり、他の問題(フリーズブラウザなど)が発生する可能性があります。推奨されている方法である「setTimeout()
」を貼り付けることをお勧めします。
スリープ機能や他の無意味なタイトループのような機能を使っている人のためにノートパソコンでNoScriptを使用しています。それ以外の場合は、突然私の膝の穴を燃やす。 –
** @ James M.::*完全に合意しました。なぜ、setTimeout()の周りにこのような大きな悪影響があるのか理解できませんでした。 –
私はsetTimeout()がそれを取り巻く何かを持っているとは思っていません。 たとえば、ブラウザのロックを回避するために、処理が集中しているループでプロセッサを短時間アイドル状態にしたい場合などです。経験の浅いJavaScriptプログラマにとって、この結果をsetTimeoutで達成することは難しいでしょう。 – KingRadical
This threadは良い議論と有益なソリューションを持っています
function pause(iMilliseconds)
{
var sDialogScript = 'window.setTimeout(function() { window.close(); }, ' + iMilliseconds + ');';
window.showModalDialog('javascript:document.writeln ("<script>' + sDialogScript + '<' + '/script>")');
}
は、残念ながら、IEの一部のバージョンでは動作しないことが表示されますが、それがあることが判明した場合、スレッドは、他の多くの立派な提案を持っていますあなたのための問題。
問題を待っている解決策のようです。私は、 'setTimeout'がその仕事をしない単一の状況について考えることはできません。しかし、創造性は+1です。 :) –
実際にはsetTimeout
のみがそのジョブで問題ありません。通常、特定されていない方法でビジーループとして正確な遅延を設定することはできません。
setTimeoutでjsインタプリタを一時停止することはできません。 –
遅延の後に関数を呼び出すことができます。 setTimeoutは 'ブロッキング'ではありません。残りのコードは、想定されているとおりに動作します。 –
私はこの問題を適切に解決する必要があっただけです。
Ajax経由で、スクリプトはX(0-10)メッセージを取得します。 私がしたかったこと: 10秒ごとに1つのメッセージをDOMに追加します。
私がなってしまっコード:
$.each(messages, function(idx, el){
window.setTimeout(function(){
doSomething(el);
},Math.floor(idx+1)*10000);
});
基本的には、スクリプトの「タイムライン」としてタイムアウトを考えます。
これは、私たちがコードに何をしたいです:
DoSomething();
WaitAndDoNothing(5000);
DoSomethingOther();
WaitAndDoNothing(5000);
DoEvenMore();
これは我々がJavaScriptにITを伝える必要があります方法です:
At Runtime 0 : DoSomething();
At Runtime 5000 : DoSomethingOther();
At Runtime 10000: DoEvenMore();
・ホープ、このことができます。
SetTimeOutの動作を説明してくれてありがとうございました。問題は、後でコードが長くなる、またはサーバーの応答に依存する場合に、実際のタイムラインを秒単位で視覚化することも難しくなります。 –
phpページを同期して呼び出すAJAX関数を使用し、そのページで遅延として機能するphp usleep()関数を置くことができます。
function delay(t){
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST","http://www.hklabs.org/files/delay.php?time="+t,false);
//This will call the page named delay.php and the response will be sent to a division with ID as "response"
xmlhttp.send();
document.getElementById("response").innerHTML=xmlhttp.responseText;
}
コードを読み込み可能にフォーマットしてください。 – kleopatra
ウェブデザインの基本を忘れないでください。基本的な原則はできるだけサーバー負荷を軽減することです。シンプルな時間遅延のために、サーバーからのページを無限に要求しています。ここで何をやっているのか考えてみてください。 –
- 1. 遅延を伴うJavascriptタイムアウト
- 2. 遅延を伴うjavascriptリダイレクト
- 3. 遅延ロードによる遅延ポップアップタグ
- 4. マウスによるキーボード入力の遅延
- 5. beforeunloadの遅延Javascript
- 6. 遅延Javascriptのホバーアクション
- 7. Javascript/Silverlightプロキシダブルロード遅延
- 8. AS3:遅延フレームアニメーションを入力
- 9. JavaScriptでの遅延方法
- 10. JavaScript不要な遅延?
- 11. JavaScriptオーディオ再生の遅延
- 12. 遅延javascriptのデモ機能
- 13. 遅延解析用JavaScript
- 14. IBM BPMコードJavascriptトリガー遅延
- 15. JavaScriptのデフォルトイベントの遅延
- 16. JavaScriptのイメージローテータ時間遅延
- 17. Javascriptの遅延のプロンプト
- 18. Nettyのソケットの受け入れ遅延
- 19. SDL FPS入力遅延
- 20. 遅延ジョブのバッチ挿入
- 21. JavaScript - 特定のjavascriptの遅延実行
- 22. Primefacesによる遅延問題overlayPanel - 遅延ロード
- 23. 遅延::モジュールによるジョブ
- 24. RxJava遅延オブザーバブルの遅延
- 25. スレッドの遅延 - 遅延
- 26. ラケットで関数の引数を遅延/遅延評価するにはどうすればよいですか?
- 27. Javascriptでの実行をどのように遅延させるのですか?
- 28. どのようにjavascript/jqueryの変更イベントの遅延を減らす?
- 29. javascriptの画面遅延によるサイトの掻き取り
- 30. 遅延を伴うCSSコンテンツ
のsetTimeoutが適切でない理由を説明することができます/あなたのニーズを満たしていないのですか? – eyelidlessness