Javascript:参数在未在回调函数中传递时采用随机值

时间:2011-01-20 05:55:38

标签: javascript

我正在定期进行ajax调查。为了达到同样的目的,我有以下代码:

window.setInterval(pollForBids, 5000);

函数pollForBids定义如下:

function pollForBids(supplierId){
    alert(supplierId);
    $.ajax({
      method: "GET",
      url : "/enterprize-sourcing/refreshBids.do",
      async : true,
      cache : false,
      data  : {action   : "refreshList", 
               eventId  : eventId,
        lastRetrieveTime: makeFinite(latestBidTime, 0),
             supplierId : makeFinite(supplierId, "")},
      success: function(xml){
        refreshBids(xml);
      }
    });
}

我在代码中有其他地方需要参数,但在这种特殊情况下我没有。但是,警报每5秒给我一个随机整数值。它不应该总是未定义吗?

3 个答案:

答案 0 :(得分:3)

正如Mozilla开发人员中心所述:“setInterval()将传递回调函数调用后的毫秒数”。

MDC

通常,您传递给setInterval的回调函数不会带任何参数,因此您在supplierId参数中获得了“毫秒延迟”值。

另请注意,无论您的回叫是否已完成,都会每隔5秒调用setInterval

答案 1 :(得分:0)

为什么不使用像

这样的东西
function pollForBids(supplierId){
if (typeof supplierId == "undefined") {
    supplierId = "default value";
  }

   $.ajax({
      method: "GET",
      url : "/enterprize-sourcing/refreshBids.do",
      async : true,
      cache : false,
      data  : {action   : "refreshList", 
               eventId  : eventId,
        lastRetrieveTime: makeFinite(latestBidTime, 0),
             supplierId : makeFinite(supplierId, "")},
      success: function(xml){
        refreshBids(xml);
      }
    });
}

答案 2 :(得分:0)

尝试将函数包装在setInterval:

中的匿名函数中
  window.setInterval( function() {
      pollForBids();
  }, 5000);

这将防止随机数传递到pollForBids函数。