私は、一般的な解決策としてこれを提案することができる:使用の
function sleep (ms, args, obj) {
/* Called at the top of a function to invoke a delay in processing that
function
Returns true if the function should be executed, and false if the sleep
timer is activated.
At the end of the sleep tiemout, the calling function is re-called by
calling it with "apply (obj, args || [])".
*/
var caller = sleep.caller;
if (caller.sleepTimer) {
/* if invoked from timeout function, delete timer and return false */
delete caller.sleepTimer;
return true;
}
/* Create timer and re-call caller at expiry */
caller.sleepTimer = window.setTimeout (function() {
caller.apply (obj || null, args || []);
},ms);
return false;
}
例:オペラとFirefoxでテスト
function delayed() {
if (!sleep (5000)) return;
document.body.innerHTML += "<p>delayed processing</p>";
}
function delayed_args (a, b) {
if (!sleep (10000, arguments)) return;
document.body.innerHTML += "<p>args : (" + a + ", " + b + ")</p>";
}
function delayed_method_args (a,b) {
if (!sleep (20000, arguments, this)) return;
document.body.innerHTML += "<p>method_args " + this + " (" + a + ", " + b + ")</p>";
}
3.0
出典
2009-06-24 07:28:19
HBP
睡眠はそれが原因となりますように悪い考えになる前に、あなたの行ラインが実行されますがブラウザのUIが応答しなくなる – cobbal
10秒間の検証を心配しています。サーバーが応答するのは時間ですか?あなたがAJAX呼び出しで検証を行っている場合は、とにかくコールバックを取得してはいけませんか? – Nosredna