我已经实现了一个定时器,它每5秒钟向服务器发送一次GPS坐标,并且一旦按下停止按钮就应该停止这样做。问题是定时器在按下停止按钮后最后一次运行,这意味着定时器没有立即终止。 我找不到立即停止计时器的任何解决方案。因为我认为这是一个普遍的问题,这对我来说是一种祸害。可能是我做错了。 我从here实现了计时器。
我的代码
$(document).on('click', '#sendCoordinates', sendCoordinates);
$(document).on('click', '#stopSending', stopSending);
function sendCoordinates() {
app.sendIntervalId = setInterval(turnGpsOnAndSend,5000);
}
function stopSending() {
console.log("Trip ended");
clearInterval(app.sendIntervalId);
}
function turnGpsOnAndSend() {
if (navigator.geolovation) {
navigator.geolocation.getCurrentPosition(function(position){
var lat = position.coords.latitude;
var lng = position.coords.longitude;
var data = {
lat: lat,
lng: lng
};
sendCoordinatesToServer(data);
},function (error) {
console.log("GPS error");
}
)
}
}
function sendCoordinatesToServer(data){
var payLoad = data;
var invocation = $.ajax({
type: "PUT",
url: app.url,
contentType: 'application/json',
data: payLoad
}).done(function(response) {
console.log("success");
}).fail(function(jqXHR,textStatus,errorThrown) {
console.log("fail" + jqXHR.status);
});
}