2010-11-25 224 views
1

我有一個被調用並返回json數據的ajax函數。這個功能是通過一個的setInterval循環調用:從setInterval函數獲取返回值

function SetMaxBidReload() { 
     var reloadInt = 6000; 
     var doReload = true; 

     //set some logic here 

     if (doReload) { 
      setInterval(function() { ReloadMaxBid(); }, reloadInt); 
     } 
    } 

    function ReloadMaxBid() { 
     var nextReload; 
     $.ajax({ 
      url: 'ajaxcall.aspx', 
      cache: false, 
      success: function (data) { 
       //change to dom elemants here based on return data 
       nextReload = data[0].NextReload; 
      } 
     }); 
     return nextReload; 

    } 

什麼即時試圖做的是改變的setInterval的依據是什麼來自AJAX調用回reloadInt。

a:是可能的嗎?b:我該怎麼做?

即時通信開放,就如何通過不同

+0

`ReloadMaxBid`總是返回`undefined`,因爲````成功`處理程序可能不會在`ReloadMaxBid`返回之前被調用。 – 2010-11-25 23:02:50

+0

確實......我甚至沒有想到這一點。你有什麼建議來克服這個問題? – AaronHS 2010-11-25 23:07:54

回答

2

setInterval編碼它來完成這一建議需要超時PARAM一次,然後執行基於該時間間隔的功能,改變了reloadInt不會有任何影響任何責任。

您需要在成功回調使用setTimeout

function ReloadMaxBid() { 
    $.ajax({ 
     url: 'ajaxcall.aspx', 
     cache: false, 
     success: function (data) { 
      //change to dom elemants here based on return data 

      var next = data[0].NextReload; 
      if (next !== -1) { 
       setTimeout(function(){ReloadMaxBid();}, next); 
      } 
     } 
    }); 
} 

你也可能需要使用setTimeout6000價值的地方得到的東西開始。