如何用JavaScript每秒重复执行函数,实现table.php在index.php中的实时刷新?
解决table.php每秒实时刷新的问题
哦,这个问题很常见——你用的setTimeout只会执行一次函数调用,所以才只刷新了一次table内容。要实现每秒重复刷新,你有两个靠谱的方案:
方案1:使用setInterval(简单直接)
setInterval的作用就是按照指定时间间隔重复执行目标函数,刚好符合你的需求。修改代码如下:
function get_table() { $("#tableloader").load('table.php'); } // 每隔1秒触发一次get_table函数 setInterval(get_table, 1000);
这样浏览器就会每1秒自动调用一次get_table,实现table内容的实时同步。
方案2:递归调用setTimeout(更可靠)
如果table.php的加载偶尔会超过1秒,setInterval可能会导致多个请求叠加(前一个请求还没完成,下一个又发出去了)。这种情况下,递归调用setTimeout更稳妥——它会在每次加载完成后,再等待1秒发起下一次请求:
function get_table() { $("#tableloader").load('table.php', function() { // 只有当本次加载完成后,才设置下一次刷新 setTimeout(get_table, 1000); }); } // 首次调用启动刷新循环 get_table();
额外提示:如何停止刷新
如果你需要在某个时机停止刷新(比如用户切换到其他页面),记得保存定时器引用并清理:
- 对于
setInterval方案:
// 保存定时器ID const tableRefreshTimer = setInterval(get_table, 1000); // 需要停止时调用 clearInterval(tableRefreshTimer);
- 对于递归
setTimeout方案:
let shouldRefresh = true; function get_table() { if (!shouldRefresh) return; $("#tableloader").load('table.php', function() { if (shouldRefresh) { setTimeout(get_table, 1000); } }); } // 启动刷新 get_table(); // 需要停止时设置shouldRefresh为false shouldRefresh = false;
内容的提问来源于stack exchange,提问作者adam
相关产品推荐
相关产品推荐

