我有一个页面,其中包含供用户在队列中完成的项目列表。项目被添加到数据库中,我需要更新此列表并定期(可能每分钟)反射(reflect)这些更改。
我不想向页面添加元刷新,因为我想避免重新加载页面。我已经有一个通过 ajax 更新列表的函数,所以我想每分钟调用这个函数。
页面初始加载后,如何重复调用此函数而不执行阻塞 javascript 循环?有没有办法暂停 setInterval 或其他方法来允许队列池的其余部分执行?
我担心这种情况发生:
$('document').ready(function () {
setInterval( function() {
updateList();
}, 60000);
}
最佳答案
while(true)
循环确实会阻止所有其他脚本的执行。 setInterval
不会。
理想的解决方案是像socket.io
这样的网络套接字。有了这个,你就可以得到像
socket.on("add", function (msg) {
addItem(msg);
}).on("removeItem", function (msg) {
removeItem(msg);
})
然后,在您的服务器上,您可以简单地socket.emit("messageType", msg);
。这将使您不必不断地使用 AJAX 轮询服务器。
但是,如果不可能,您可以使用以下命令修复代码
$(document).ready(function () {
var updateInterval = setInterval(updateList, 60000);
// to clear interval: clearInterval(updateInterval);
})
其中 updateList
是通过 AJAX 轮询服务器并将收到的任何任务附加到页面的函数。
关于javascript - 使用ajax自动刷新页面数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28272892/