我的网页中有一个字段A,当用户编辑时,调用API调用(使用jQuery),更新字段B.编辑后,应每隔10秒调用一次API来更新B场再次出现。我目前使用以下方式执行此操作:
setTimeout(thisFunction, 10000);
问题是每次用户编辑字段A时都会设置此超时,在编辑字段A几次后会导致多次设置超时并且API被多次调用。这使得网站看起来非常紧张。
我想要做的是,每次编辑字段时都设置一个新的超时,无论是用户编辑字段A,还是间隔达到10秒,从而轮询API。换一种说法;如果字段B未更新10秒或更长时间,则应更新该字段。
最后,如果用户然后单击按钮C,则轮询应该停止。
所以我的问题;如果该字段B没有更新10秒或更长时间,如何运行一个更新字段B的函数?如何在我想要的时候停止轮询(当用户点击另一个按钮时)欢迎所有提示!
答案 0 :(得分:36)
可以使用 clearTimeout 取消计时器,所以:
var timer = null;
if (timer) {
clearTimeout(timer); //cancel the previous timer.
timer = null;
}
timer = setTimeout(thisFunction, 10000);
答案 1 :(得分:4)
var update;
// something happened
clearTimeout(update);
update = setTimeout(thisFunction, 10000);