如何在 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 重置键盘焦点

将 .animate 更改为 .css 并重置宽度

Javascript/JQuery 翻牌游戏

重置特定 div 的 CSS 样式

如何在 javascript/jquery 中发出 ajax 请求

JavaScript / jQuery:如何在 Firefox 中获取选定的文本