从setInterval函数获取返回值

问题描述:

我有一个被调用并返回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

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价值的地方得到的东西开始。