【问题标题】:stopping setTimeOut(); [duplicate]停止 setTimeOut(); [复制]
【发布时间】:2015-02-06 02:10:42
【问题描述】:

请帮助获取正确的函数或方法来停止 setTimeout 函数。

我一直在尝试使用以下代码,但 setTimeout“循环”无法停止。 我想要做的是每 5 秒获取一次用户的当前位置,然后当我按下停止按钮时。它停止获取位置。

   function geoTrackstart(){  
//geolocation code
}); 
 timer = setTimeout(geoTrackstart, 5000);
}

function geoTrackstop(){
  clearTimeout(geoTrackstart);
            timer = 0;
}

【问题讨论】:

  • 谷歌你的问题标题...
  • @August 认为他刚刚被 Google 禁止。而且没有其他搜索引擎...

标签: javascript


【解决方案1】:

我想你想这样使用:

function geoTrackstart(){  
   //geolocation code
}); 
timer = setTimeout(geoTrackstart, 5000);//set timer

function geoTrackstop(){
  clearTimeout(timer);//clear the timer
  //setTimeout(geoTrackstart,5000);//set timeout if you want to run again
}

【讨论】:

    【解决方案2】:

    如果您要轮询地理位置,我会使用间隔而不是超时,以便它每 5 秒运行一次,直到您停止它,这样您就不必每 5 秒创建一个新的超时 --除非您想手动创建超时。:

    var geoFetchInterval;
    function geoTrackstart(); {};
    
    //if you want it to run immediately the first time
    geoTrackStart(); 
    
    //start the interval
    geoFetchInterval = setInterval(geoTrackStart, 5000);
    
    function getTrackStop() {
      clearInterval(geoFetchInterval);
    };
    
    //assuming jquery
    $('#stop-button').on('click', getTrackStop);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 2018-06-21
      • 2019-10-01
      • 2012-01-16
      相关资源
      最近更新 更多