jquery的定时器setTimeout()与定时循环执行器setInterval()的区别

时间:2021-05-24 00:21:36


一、定时循环执行器setInterval("getLoc()",5000);或者setInterval(getLoc,5000);的书写格式都是正确的。

这个方法是每过5秒就会执行getLoc()方法,从而调用ajax去后台访问数据。这里的ajax主要是去后台访问

经纬度的数据,以百度地图坐标的方式显示当前记录的位置。

 $(function(){
        setInterval(getLoc,5000);
    //getLoc();
     });
     function getLoc(){
    $.ajax({
    url: "/service/gps/selectTopGps",
          type : "POST",
          data:{}, 
          success: function(ajaxData) { 
         bm.clearOverlays();
         lat=ajaxData[0].latitude;
             lon=ajaxData[0].longitude;
            // a++;
         // console.log(a); 
          //调用百度地图  
          var x = lon*1/100;
          var y = lat*1/100;
          var ggPoint = new BMap.Point(x,y);
         bm.centerAndZoom(ggPoint, 15);
         bm.addControl(new BMap.NavigationControl());


         //坐标转换完之后的回调函数
         translateCallback = function (data){
           if(data.status === 0) {
             var marker = new BMap.Marker(data.points[0]);
             bm.addOverlay(marker);
             var label = new BMap.Label("您的宝贝在这里",{offset:new BMap.Size(20,-10)});
             marker.setLabel(label); //添加百度label
             bm.setCenter(data.points[0]);
           }
         }


          setTimeout(function(){
             var convertor = new BMap.Convertor();
             var pointArr = [];
             pointArr.push(ggPoint);
             convertor.translate(pointArr, 1, 5, translateCallback)
          }, 1000);
          },
          error:function(){
         console.log("加载GPS信息失败!"); 
         alert("GPS信息加载失败");
          }
    });
     }


二、定时器setTimeout("getLoc",5000);或者setTimeout(getLoc,5000);的书写格式都是正确的。

如果把上面的setInterval()方法换成setTimeout()则getLoc()方法只会在5秒后执行一次后不再执行。