SetTimeOut Timer中的JQuery GetJSON

任何人都可以发布一个示例代码,其中有一个正在运行的计时器(javascript settimeout)并进行数据检索。

基本上我的这个计时器做的是显示新消息..

myFunction(param){ //data retrieval operation //using getJSON.. call displaydata() base on param settimeout("myFunction()", param, 1000); } function displaydata(param){ //processing alert('test')} 

我应该使用getJSON吗? 我认为这是异步调用的问题..

我注意到你需要在代码中修复两件事。

  • setTimeout()方法有一些不正确的参数
  • 您的异步getJSON调用会在下一个超时和getJSON方法的结果之间创建竞争条件。 改为:

 function yourFunction(params) { jQuery.getJSON("url", {data}, function(data, textStatus){ // handle your JSON results // Call the timeout at the end of the AJAX response // This prevents your race condition setTimeout(function(){ yourFunction(params); }, 1000); } } setTimeout(function(){ yourFunction(params); }, 1000); 

第一个参数应该是函数文字或函数引用,第二个参数应该是毫秒。

 setTimeout( function() { getData('param') }, 1000); function getData() { $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){ $.each(data.items, function(i,item){ $("").attr("src", item.media.m).appendTo("body"); if ( i == 3 ) return false; }); }); } 

我没有在我的示例中使用实际参数,但您可以轻松更新它以执行此操作。 此外,我不确定你是否在进行轮询(这不会进行轮询/递归调用)。