You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用setInterval自动更新页面时初始内容加载延迟如何解决

问题描述

现有页面自动更新代码运行正常,但存在初始加载延迟问题:页面首次打开时需要等待40秒才会展示拉取到的内容,需要调整代码实现:页面初始加载时立即展示拉取内容,之后每隔40秒自动更新。
原有代码如下:

$(document).ready(function(){
    jQuery(window).on("load", function(){
        refreshInterval = setInterval(function(){
            $('#box').load('handle.php');
        },40000);
    });
});
故障原因

setInterval的执行规则是:注册定时器后,会先等待设定的间隔时长,才会第一次执行传入的回调函数。原有代码仅将内容拉取逻辑放在定时器回调中,没有做首次触发,因此第一次内容拉取需要等满40秒才会执行。
另外原有代码嵌套绑定$(document).ready和window.load事件属于冗余逻辑:window.load需要等待页面所有资源(包括图片、外部样式、音视频等)全部加载完成才会触发,会额外拉长首次内容拉取的等待时间。

修复代码

将内容拉取逻辑抽为独立函数,初始化时先手动调用一次完成首屏内容加载,再启动定时器执行后续定时刷新即可,优化后代码:

$(function() {
    // 抽离公共的内容加载逻辑
    const fetchAndRenderContent = () => $('#box').load('handle.php');
    // DOM就绪后立即拉取首屏内容
    fetchAndRenderContent();
    // 启动40秒间隔的定时刷新任务
    const refreshInterval = setInterval(fetchAndRenderContent, 40000);
});
补充说明

如果业务要求必须等页面所有静态资源加载完成后再拉取动态内容,只需要把首次调用fetchAndRenderContent、启动定时器的逻辑放到window.load回调内即可,依然可以实现首次立即加载、后续定时刷新的效果。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 07:51:28