我的网页中有一个字段a,当用户编辑时,它会调用API调用(使用jQuery),该调用会更新字段B。编辑后,应该每10秒调用一次API来再次更新字段B。我目前使用:
setTimeout(thisFunction, 10000);
问题是,每次用户编辑字段A时都会设置此超时,这在编辑字段A几次后会导致多次设置超时,并多次调用API。这让网站看起来压力很大。
我想做的是,每次编辑字段时都设置一个新的超时,无论是通过用户编辑字段a,还是通过达到10秒的间隔,从而轮询API。换句话说;如果字段B在10秒或更长时间内没有被更新,则该字段应该被更新。
最后,如果用户单击按钮C,则轮询应该停止。
所以我的问题;如果字段B在10秒或更长时间内没有更新,我如何运行更新字段B的函数,以及我如何在需要时(当用户单击另一个按钮时)停止轮询。欢迎所有提示!
可以使用clearTimeout取消计时器,因此:
var timer = null;
if (timer) {
clearTimeout(timer); //cancel the previous timer.
timer = null;
}
timer = setTimeout(thisFunction, 10000);
var update;
// something happened
clearTimeout(update);
update = setTimeout(thisFunction, 10000);