[英]Timeout a function in JavaScript/jQuery
我遇到以下问题:
我在自己的网站上使用Google地图。 我已将以下eventListener附加到地图本身:
google.maps.event.addListener(map, 'bounds_changed', scheduleDelayedCallback);
每当有人拖动地图时,都会调用bounds_changed事件。 我的问题是在拖动过程中多次调用它。 现在,我需要找到一种方法来仅调用回调函数,如果在上一个(例如750毫秒)内未调用该函数。
我使用以下两个功能完成此操作:
function fireIfLastEvent() {
var now = new Date().getTime();
if (lastEvent.getTime() + 750 <= now) {
this_function_needs_to_be_delayed();
} else {
$("#main").html('Lade...');
}
}
function scheduleDelayedCallback() {
lastEvent = new Date();
setTimeout(fireIfLastEvent, 750);
}
此方法在Chrome和Opera中效果很好。 在IE中,它有时可以工作,在Firefox中,它却永远无法工作(即使经过了750毫秒,它也会调用函数)。
有什么坚决的方法可以使函数调用超时?
谢谢。
您不需要在这里超时。
function scheduleDelayedCallback() {
var now = new Date();
if (now.getTime() - lastEvent.getTime() >= 750) {
// minimum time has passed, go ahead and update or whatever
$("#main").html('Lade...');
// reset your reference time
lastEvent = now;
}
else {
this_function_needs_to_be_delayed(); // don't know what this is.
}
}
您对要发生的事情的解释不是最清楚,因此请让我知道流程是否错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.