JavaScript触发了最后一个事件

时间:2019-04-09 14:59:20

标签: javascript event-handling setinterval

我正在编写Web应用程序,但我不知道如何继续使用Java进行操作。

我在放大地图或移动地图时会触发一个功能。我尝试避免将此功能发挥作用,直到一段时间(例如2秒)为止。好的,我可以使用setInterval方法来实现它。

但是我想要的,但我不知道该怎么做...如果我进行了3次缩放,两次之间的时间非常接近,我只想处理最后一次缩放,不是两个以前的。我的意思是,必须取消两个第一个函数调用,或类似的操作。

我该怎么办?


我所拥有的示例(伪代码)

function doStuff() {
    setInterval(function({
       // do some stuff here...
    }, 2000);
}

myMap.on('dragend', doStuff);  // If I move inside the map
myMap.on('zoomend', doStuff);  // If I do zoom on the map

2 个答案:

答案 0 :(得分:1)

我要尝试的是每次启动间隔时都以全局变量的形式设置捕获intervalID;然后在触发事件时检查变量是否已设置,如果已设置,则在开始下一个间隔之前,使用clearInterval函数取消上一个间隔。

类似这样的东西:

var intervalID = 0;

function doStuff(){
  if(intervalID != 0){
    window.clearInterval(intervalID);
  }
  intervalID = setInterval(function({
       // do some stuff here...
       intervalID = 0; // try reseting the intevalID on completion, not sure if here
  }, 2000);

//  Your stuff

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval

答案 1 :(得分:0)

您可以使用object.addEventListener('load', function())函数。

对象加载后将触发其中的函数。