2009-09-29 58 views
1

我有一个返回一个整数(目前的信誉评分在社区网站的用户)的功能,每3分钟。这个数字通常会根据他们的评论和提交表决的方式而上升或下降。我想每隔30秒左右“轮询”一次,看看它是否发生了变化,如果有,更新我正在显示的号码。试图调用一个函数使用JavaScript

在另一个线程的StackOverflow,我发现这个JavaScript片段,看起来很有用:

function listen() { 
    $.get("/mylongrequestfile", {}, function(data) { 
    $("#mydiv").html(data); 
    listen(); // then launch again 
    })); 
}; 

难道我只是替换/ mylongrequestfile我的功能?我正在尝试,但它不是很好。我如何使用此代码或其他代码片段来每30秒抓取并显示此值?

回答

5

您可以使用

window.setInterval

重复调用的函数,每次调用该函数之间的固定时间延迟。

var intervalID = window.setInterval(yourfunctionname, 300); 

这会延迟300毫秒。

回调参数

的setInterval()将通过毫秒后期回调被叫到回调函数的数量,如果它希望别的东西作为一个参数,它可以混为一谈。为了避开这个问题,使用匿名函数来调用你的回调函数。

同样的技术,如果你需要一个参数传递给你的回调函数,但需要它在Internet Explorer,它不支持在使​​用setInterval发送额外的参数工作()使用。

var intervalID = setInterval(function() { YourFunction(); }, 300); 
+0

我该怎么办的 “VAR” 在前面? ?现在,我使用 听起来好像我可以使用 会这样吗? – bflora2 2009-09-29 10:45:30

+0

var用于javascript中的变量声明。 – rahul 2009-09-29 11:04:50

+1

为了避免任何人依靠它,这是值得一提的是,“迟到”的参数仅支持Mozilla的(它实际上是从上世纪90年代的Netscape浏览器中遗留下来的),而且还趋向于具有随时间漂移远离现实价值。见https://bugzilla.mozilla.org/show_bug.cgi?id=512259其中布兰登·艾克说,它的时间来摆脱它,并https://bugzilla.mozilla.org/show_bug.cgi?id=394769哪里做所以讨论时间更长,价值的潜在不准确性被提及。最重要的是,不要使用它:-) – NickFitz 2009-09-29 11:44:39

0
var listener = function() { 
$.get("http://www.domain.tld/script/", {}, function(data) { 
    $("#mydiv").html(data); 
})); 
}; 

var interval = setInterval(listener, 30000);