2017-02-06 6 views
0

私は自分のページに増加の進行状況バーを表示しようとしています。私は同時に2つのアヤックスを走らせる。私はAJAXが完了したら、setIntervalclearInterval(GetProgress);として停止しますが、動作しません。間隔をクリアすると現在動作しません

問題が何ですか?

var RefreshCheapCharters = function (el) { 
     $(el).append('<i class="fa fa-spinner Rotate360"></i>'); 
     $.when(RefreshProgress(3), 
     $.ajax({ 
       url: '/CheapTravel/CheapCharters/', 
       type: "POST", 
       success:function (result) { 
         console.log(result); 
         $(el).find('.fa-spinner').remove(); 
         clearInterval(GetProgress); 
         $('.progress-bar').css('width', 0 + '%').text(''); 
        }, 
       error: function (jqXhr, textStates, errorThrown) { 
        console.log(errorThrown); 
        $(el).find('.fa-spinner').remove(); 
        clearInterval(GetProgress); 
        $('.progress-bar').css('width', 0 + '%').text(''); 
       } 
      }) 
      ); 
     }; 
     var RefreshProgress = function (reserveType) { 
      setInterval(function() { 
       GetProgress(reserveType); 
      }, 10000); 

     }; 
     var GetProgress = function (reserveType) { 
      $.ajax({ 
       url: '/CheapTravel/RefreshProgress', 
       data: { reserveType: reserveType }, 
       type: "POST", 
       success: 
        function (result) { 
         $('.progress-bar').css('width', result + '%').text(result + '% انجام شد'); 
        }, 
       error: function (jqXhr, textStates, errorThrown) { 
        console.log(errorThrown); 
        $('.progress-bar').css('width', 0); 
        console.log('خطای سیستمی'); 
        clearInterval(GetProgress); 
       } 
      }); 
}; 

答えて

2

clearInterval()方法はsetInterval()メソッドで設定されたタイマをクリアします。

setInterval()によって返されたID値がclearInterval()メソッドのパラメータとして使用されるため、このID値を取得する必要があります。

var myIntervalID = setInterval(function() { 
    GetProgress(reserveType); 
}, 10000); 

clearInterval(myIntervalID); 

あなたは間違っている、clearInterval()に機能(GetProgress)を通過しています。

1
setInterval(function() { 
    GetProgress(reserveType); 
}, 10000); 

はなった場合:ファイルの先頭に

var myInterval; 

次に機能に

myInterval = setInterval(GetProgress(reserveType), 10000); 

あなたは、あなたがある間隔を設定してやっている

clearInterval(myInterval); 

clearInterval(GetProgress); 

が代わりに呼び出された関数の変数名を渡す引数として呼び出される関数を渡して間隔をクリア無名関数を渡し、その関数では必要な関数を呼び出します。無名関数を渡す必要はなく、実行する必要のある関数を渡すだけです。

関連する問題