2015-02-05 60 views
0

請幫助獲取正確的函數或方法來停止setTimeout函數。停止setTimeOut();

我一直在嘗試使用下列代碼,但setTimeout「loop」無法停止。 我想要做的是每5秒獲取用戶的當前位置,然後當我按下停止按鈕時。它停止獲取位置。

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

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

谷歌你的問題標題... – August 2015-02-05 18:04:45

+0

@August認爲他只是禁止從谷歌。並沒有其他搜索引擎... – 2015-02-05 18:06:40

回答

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 
} 
0

如果這樣,它的運行每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);