2

是否可以在单击按钮或任何其他事件时停止在 javascript 中执行函数?以下是我的困境

function drop() {

    setTimeout(function () {    //  call a 250ms setTimeout when the loop is called
       setMarkers(map, locationArray, locationNameArray, iterator);
       iterator++;
       if (iterator < locationArray.length) {      //  if the counter < 10, loop!
         drop();             
       }
     }, 250);
}

此功能以 250 毫秒的间隔在我的画布上放置 Google 地图图钉。现在,如果用户想要导航到上一个屏幕(远离地图页面),单击后退按钮我想停止执行此 drop() 函数,重置计数器(迭代器)并返回。

知道我怎么能做到这一点,或者它甚至可能吗?谢谢!

4

1 回答 1

7

最简单的方法是在其中抛​​出一个“全局”范围的变量,并在每次迭代时检查它。

var cancel = false;
function drop() {
    setTimeout(function () {    //  call a 250ms setTimeout when the loop is called
       setMarkers(map, locationArray, locationNameArray, iterator);
       iterator++;
       if (iterator < locationArray.length && cancel === false) {      //  if the counter < 10, loop!
         drop();             
       }
     }, 250);
}

然后在事件处理程序中更新相同的变量:

$("#mybutton").click(function() {
    cancel = true;
});
于 2012-06-19T05:49:41.410 回答