1

我有一个函数,当鼠标指针悬停在图像上时,它会在每个鼠标按下事件上触发。现在,我在这个鼠标按下函数中调用了两个函数。

我需要每次调用一个函数,最后一次Triangulate()调用另一个函数。ImageCalculation()

img_mouse_down()这里最后一次只是意味着,连续函数调用之间应该有至少 3 秒或更多的间隔。

下面是我的代码:

function img_mouse_down(){
  if(leftMouseButton){
    Triangulate(); //Call this function every time.
    ImageCalculation(); //Call this function only the last time
  }
}

如果我连续单击图像 5 次,然后暂停 3 秒或更长时间,Triangulate()则应该调用 5 次并且ImageCalculation()应该只调用一次。

如何做到这一点?

4

2 回答 2

2
var glob_timeout_holder;
function img_mouse_down(){
  if(leftMouseButton){
    Triangulate(); //Call this function every time.

    clearTimeout(glob_timeout_holder); //clear if any previous continuing timeouts

    glob_timeout_holder = setTimeout(ImageCalculationlast, 3000);
  }
}

据我了解,这可能会对您有所帮助。每次运行 img_mouse_down() 时,它都会设置执行 ImageCalculation() 的超时时间,但在此之前会杀死任何以前的 timeOuts,结果是,如果用户停止单击,ImageCalculation() 将在最后一次单击后 3 秒后调用一次。

于 2013-06-21T10:33:48.177 回答
0

类似的东西应该可以解决您的问题。每次调用都会清除超时,否则会在 3 秒后触发 ImageCalculation。

var timer = null
function img_mouse_down () {
    if(leftMouseButton){
    Triangulate();
    if (timer !== null) {
        clearTimeout(timer)
    }
    timer = setTimeout(function () {
        ImageCalculation()
    }, 3000)
  }
}
于 2013-06-21T10:34:57.657 回答