是否可以在localstorage中存储setTimeout函数?
前提是我有以下javascript代码。
var timeout = setTimeout(function(){ alert('this is executed after 5 seconds'); }, 5000); localStorage.setItem('timeout_event', timeout);
我已经检查了setTimeout函数的返回值是一个id或者什么。 如果用户刷新页面,我该如何重新运行超时事件? 它甚至可能吗?
任何帮助都可以。 先感谢您。
我已经检查了
setTimeout
函数的返回值是一个id或者什么。
是的,它是一个数字ID,您可以将其传递给clearTimeout
以取消计划的函数运行。
如果用户刷新页面,我该如何重新运行超时事件?
是的,当页面被卸载时,所有未完成的超时都将中止,因此您需要在新页面上重新启动超时。
它甚至可能吗?
是的,不是。 您将无法运行您从最后一页调度的函数 – 它的所有上下文/范围都将丢失 – 您需要在新页面的上下文中创建一个新函数。
但是,如果要根据页面的超时/间隔执行某些function,可以使用DOM存储或类似方法。 您将存储指定函数运行的时间戳,以及是否已运行的标志。 这样,您可以检查以下页面是否以及何时需要重新安排该function。
如果您希望在刷新页面时执行超时function,只需在window.onload
添加该function即可
var timeout = setTimeout(function(){ alert('this is executed after 5 seconds'); }, 5000); window.onload = timeout;
这对我来说很好
如果你想要多次执行它,那么去setInterval()
var timeout = setInterval(function(){ alert('this is executed for each second'); }, 1000); window.onload = timeout;
它将被执行,直到你调用clearInterval(timeout);
如果你想要多次超时,那么你应该做这样的事情
var timeout = setTimeout(function(){ alert('this is executed after 1 second'); }, 1000); var timeout1 = setTimeout(function(){ alert('this is executed after 2 seconds'); }, 2000); var timeout2 = setTimeout(function(){ alert('this is executed after 3 seconds'); }, 3000); window.onload = timeout;timeout1;timeout2;
这是因为setTimeout会在刷新页面后立即计算时间,这对我来说很好
谢谢你的帮助。
我设法找到解决问题的方法。
Testing This is the test page.
我希望这对其他人有用。
再次,谢谢大家。