ajaxリクエストを上げたときにプログレスバーを追加したいのですが、プログレスバーの値はsetTimeoutで変更されます。しかし、リクエストを送信し続けると、値はますます速く変化します.以下は私のコードです.ajaxStart部分で設定されたajaxStopのタイムアウトをきれいにする方法を知っている人はいますか? すべてのタイムアウトをきれいにする方法は?
var $reportContent = $("#reportDataDiasplay");
var timeOut;
$(document).ajaxStart(function(){
if($(".ui-dialog").length==0){
$reportContent.append("<div id='progressBarDialog'><div id='progressbar'></div></div>");
var $progressbarDialog = $("#progressBarDialog");
$progressbarDialog.dialog({
modal: true,
width:175,
height:50,
closeOnEscape: false,
autoOpen: false
});
$(".ui-dialog-titlebar").hide();
}
var $progressbar = $( "#progressBarDialog #progressbar" );
$progressbar.progressbar({value:false});
$progressbar.progressbar( "value",0 );
function progress() {
clearTimeout(timeOut);
var val = $progressbar.progressbar( "value" ) || 0;
if ( val < 75 ) {
$progressbar.progressbar( "value", val + Math.random() * 25 );
}
if(val < 99){
timeOut = setTimeout( progress, 300 );
}
}
timeOut = setTimeout( progress, 300 );
$("#progressBarDialog").dialog("open");
});
$(document).ajaxStop(function(){
$("#progressBarDialog").dialog('close');
});