ための遅延は、これは私が欲しいの論理であると仮定し設定する:反復と要求することなく、試験の遅延のためにのjQuery:各反復
// On fail return status = 500, else success will return PDF bytestream
function request() {
return $.ajax({
url: url,
async:false,
// other properties
});
}
$('#action').click(function(e) {
$("#loading").fadeIn("slow"); // display loading
while(true) {
if(request().status != 200) {
delay(3000);
} else { break; }
}
$("#loading").fadeOut("slow"); // hide loading
});
、このコードはうまく機能:
問題は、私開始いくつかのループを入れ、内部にリクエストする:
var isOk;
$(document).ready(function(){
$('#action').click(function(e) {
$("#loading").fadeIn("slow");
while(true) {
request().always(function(jqXHR){
console.log(jqXHR);
if(jqXHR.status == 500) {
isOk = false;
setTimeout(function(){console.log("False")}, 3000);
} else { isOk = true; }
});
if(isOk) {break};
}
$("#loading").fadeOut("slow");
e.preventDefault();
});
});
iterの間に遅延がないようですation。読み込み中のシンボルは即座にfadeInとfadeOutになります。任意のアイデア反復のための正しい遅延を行うには?
タイムアウト後に実行されるfadeInコールのコールバックにfadeOutを配置します。 – Jecoms
@JecomsそれはHelpingHandの答えのようなものですか? – Mrye
fadeOutをsetTimeoutコールバックに入れてください。 –