如何在 Javascript/jQuery 中重置超时?
Posted
技术标签:
【中文标题】如何在 Javascript/jQuery 中重置超时?【英文标题】:How to reset timeout in Javascript/jQuery? 【发布时间】:2014-04-06 13:27:59 【问题描述】:我的网页中有一个字段 A,当用户对其进行编辑时,它会调用 API 调用(使用 jQuery)来更新字段 B。编辑后,应每 10 秒调用一次 API 以更新再次字段 B。我目前使用:
setTimeout(thisFunction, 10000);
问题是每次用户编辑字段A时都会设置此超时,在编辑字段A几次后会导致超时设置多次并且API被多次调用。这让网站看起来压力很大。
我更愿意做的是,每次编辑字段时设置一个新的超时,无论是通过用户编辑字段 A,还是通过达到 10 秒的间隔,从而轮询 API。换一种说法;如果字段 B 超过 10 秒未更新,则应更新该字段。
最后,如果用户点击按钮 C,轮询应该停止。
所以我的问题;如果字段 B 未更新 10 秒或更长时间,我如何运行函数来更新字段 B,以及如何在需要时停止轮询(当用户单击另一个按钮时)欢迎所有提示!
【问题讨论】:
【参考方案1】:可以用 clearTimeout 取消计时器,所以:
var timer = null;
if (timer)
clearTimeout(timer); //cancel the previous timer.
timer = null;
timer = setTimeout(thisFunction, 10000);
【讨论】:
【参考方案2】:var update;
// something happened
clearTimeout(update);
update = setTimeout(thisFunction, 10000);
【讨论】:
以上是关于如何在 Javascript/jQuery 中重置超时?的主要内容,如果未能解决你的问题,请参考以下文章
将键盘选项卡焦点设置到页面顶部/使用 JavaScript / jQuery 重置键盘焦点