.delay
jQuery でメソッドを動作させることができません:
$.delay(3000); // not working
$(queue).delay(3000); // not working
制御されていない変化する値が別の値以上になるまで待機する while ループを使用していますが、X 秒間実行を停止する方法が見つかりません。
.delay
jQuery でメソッドを動作させることができません:
$.delay(3000); // not working
$(queue).delay(3000); // not working
制御されていない変化する値が別の値以上になるまで待機する while ループを使用していますが、X 秒間実行を停止する方法が見つかりません。
この方法で一部の操作を遅らせることもできます。
setTimeout(function (){
// Something you want delayed.
}, 5000); // How long you want the delay to be, measured in milliseconds.
$.delay は、実行を停止するのではなく、キュー内のアニメーションを遅らせるために使用されます。
while ループを使用する代わりに、次を使用して毎秒チェックを実行するメソッドを再帰的に呼び出す必要がありますsetTimeout
。
var check = function(){
if(condition){
// run when condition is met
}
else {
setTimeout(check, 1000); // check again in a second
}
}
check();
jQuery のdelay
関数は、エフェクトとエフェクト キューで使用することを意図しています。delay
ドキュメントとその中の例を参照してください。
$('#foo').slideUp(300).delay(800).fadeIn(400);
変数の変化を観察したい場合は、次のようにすることができます
(function() {
var observerInterval = setInterval(function() {
if (/* check for changes here */) {
clearInterval(observerInterval);
// do something here
}
}, 1000);
})();
JavaScriptsetTimeout
は非常に優れたソリューションです。
function funcx()
{
// your code here
// break out here if needed
setTimeout(funcx, 3000);
}
funcx();
jQueryのdelay
関数は、主に jQuery アニメーション キューでアニメーションを遅延させるために使用されます。
delay()
コードの流れを止めて再実行しません。JavaScript でこれを行う実際的な方法はありません。setTimeout
他の人が言及したようなコールバックを取る関数ですべてを行う必要があります。
jQuery の目的は、delay()
実行前にアニメーション キューを待機させることです。たとえば$(element).delay(3000).fadeIn(250);
、要素を 3 秒後にフェードインさせます。
Javascript は非同期プログラミング言語であるため、実行を一時的に停止することはできません。実行を [疑似] 停止できる唯一の方法は、遅延ではなく「遅延関数コールバック」である setTimeout() を使用することです。