取消之前对谷歌地图地理编码方法的调用

Cancel previous call of Google Maps geocode method

本文关键字:编码方法 调用 谷歌地图 取消      更新时间:2023-09-26

我正在使用Javascript和Google Maps地理编码方法(在输入时使用keyup事件(实现自动完成功能,有时我在实际搜索之前收到先前的搜索。

我的目的是取消之前的通话,如果它还没有结束。有人可以帮助我吗?

getAddressLatLng : function(text,callback) {
    var geocoder = new google.maps.Geocoder();
     geocoder.geocode({
         address : text,
         region : Utils.getRegion()
     },
     function(results, status) {
         if (status == google.maps.GeocoderStatus.OK) {
             callback(results);
         }
     });
},

您可以创建一个全局请求计数器,并且仅在回调行为不增加时才执行回调行为。

例如
var requests = 0;
...
    getAddressLatLng : function(text,callback) {
        var requestNum;
        requests++;
        requestNum = requests;
        var geocoder = new google.maps.Geocoder();
         geocoder.geocode({
             address : text,
             region : Utils.getRegion()
         },
         function(results, status) {
             if(requestNum != requests) return;
             if (status == google.maps.GeocoderStatus.OK) {
                 callback(results);
             }
         });
    },
我还建议对函数进行

去抖动/限制,这样您就不会浪费带宽生成不必要的请求(下划线具有方便的函数来执行此操作(。