0

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');
});
4

2 に答える 2