setTimeout没有第一次执行

C. *_* E. 0 javascript

我正在尝试使用setTimeout.我希望它每隔五秒执行一次,但不会在调用setTimeout时立即执行.我不能让它工作:

firsttime = true;
window.setTimeout(function () {
    if (!firsttime) {
        window.location.reload();
    }
    firsttime = false;
}, 5 * 1000);
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 6

一旦window.location.reload()您的网页,所有的JavaScript变量和定时器都将丢失.当页面加载第二次,你firsttimetrue试.

所以你要做的是:当用户第一次进入页面时,在10秒后刷新它.然后每5秒刷新一次.问题是:HTTP是statelss,每次用户进入页面时,都是第一次.中间没有记忆或状态.

你能做的是:

  • 使用cookie或HTTP会话记住该用户已进入该页面.第一次使用setTimeout()10秒.在该页面上的每个后续条目上,您使用5秒钟(setInterval()这里没有价值)

  • 进入first.html等待10秒后重定向到second.html.相同,但硬编码5秒延迟.查询参数或哈希标记也可用于持久化状态.虽然有点hacky.

  • 偶尔刷新整个页面是如此2000-ish.考虑和部分DOM更新.