gpt4 book ai didi

javascript - 为什么设置的超时会因页面重新加载而失效以及如何避免?

转载 作者:行者123 更新时间:2023-11-30 16:05:11 25 4
gpt4 key购买 nike

我有一个网站,我使用 Javascript 自动循环导航以模仿用户的操作。

对于出现问题并且循环停止工作的情况,我有一个故障保护机制。在每次迭代中执行以下代码:

var failsafe = function () {
console.log("Something went wrong, reloading...");

window.location.reload();
document.failsafeTimeout = setTimeout(failsafe, 60000);
};

if (document.failsafeTimeout !== undefined) {
// the previous iteration went fine, clearing the old timeout

clearTimeout(document.failsafeTimeout);
}

document.failsafeTimeout = setTimeout(failsafe, 60000);

问题是,代码没有按我预期的那样工作。当循环中断时,故障安全处理程序被调用一次,但是,尽管被再次设置,但再也不会被调用。故障安全处理程序完成执行后,document.failsafeTimeoutundefined。我假设 window.location.reload() 异步工作,这会在分配后破坏 failsafeTimeout 属性。

我如何重写故障安全超时处理程序,以便它可以设置一个新的超时,该超时将在页面重新加载后继续存在?

最佳答案

window.location.reload() 完全重新加载页面,这会中断任何 javascript 调用。

您仍然可以通过监听 onunload 来运行一些代码。事件,但不要期望代码在 session 之间持续存在(或者您必须事先在 cookie 或 localStorage 中序列化数据)

关于javascript - 为什么设置的超时会因页面重新加载而失效以及如何避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37142970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com