clearInterval不会立即清除计时器

时间:2016-10-18 13:13:28

标签: javascript setinterval clearinterval

我已经实现了一个定时器,它每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);
   });
}

0 个答案:

没有答案