页面完全加载后延迟1秒仅执行一次函数的问题咨询
解决方法:用
setTimeout替代setInterval 嘿,这个问题其实很容易搞定!你现在踩的坑是把定时函数用错啦——setInterval的作用是每隔指定时间重复执行一次函数,这就是为什么你的your_func()会每秒跑一次。而我们要的是“延迟一段时间后仅执行一次”,这时候就得用setTimeout,它专门干这个事儿。
修改后的代码直接替换就行:
$(window).bind("load", function() { window.setTimeout(function(){ your_func(); }, 1000); });
额外补充小细节:
setTimeout(func, delay)的逻辑很简单:等delay毫秒过去后,只执行一次传入的func,执行完就彻底结束,不会再重复。- 如果你之后有需要取消这个延迟任务的场景,可以把
setTimeout的返回值存起来,用clearTimeout()取消:$(window).bind("load", function() { const timeoutId = window.setTimeout(function(){ your_func(); }, 1000); // 若要取消,调用 clearTimeout(timeoutId) 即可 }); - 要是你用的是jQuery 3.0及以上版本,更推荐用
.on()替代.bind()(.bind()已经被标记为过时啦),代码可以更简洁:$(window).on("load", function() { setTimeout(() => your_func(), 1000); });
内容的提问来源于stack exchange,提问作者Ketan Borada
相关产品推荐
相关产品推荐

