任何人都可以发布一个示例代码,其中包含一个正在运行的计时器(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吗?我认为这是异步调用的问题..
答案 0 :(得分:2)
我注意到你需要在代码中修复两件事。
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);
答案 1 :(得分:0)
第一个参数应该是函数文字或函数引用,第二个参数应该是毫秒。
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){
$("<img/>").attr("src", item.media.m).appendTo("body");
if ( i == 3 ) return false;
});
});
}
我没有在我的示例中使用实际参数,但您可以轻松更新它以执行此操作。此外,我不确定你是否在进行轮询(这不会进行轮询/递归调用)。