gpt4 book ai didi

javascript - 如何停止待处理的ajax请求?

转载 作者:行者123 更新时间:2023-12-03 08:42:56 25 4
gpt4 key购买 nike

当 LeafletJS map 上发生某个操作时,我试图停止挂起的 ajax 请求。这正是我正在做的,我有一个查询 WMS 服务的 map (使用 LeafletJS ),当用户平移、缩放或查询新图层时,之前排队的 ajax 请求将继续等待响应。

这个想法是仅处理满足当前 map View 条件的请求并取消其他所有请求。我尝试实现此目标的原因是提高当前操作的性能和渲染速度并忽略所有先前的操作。

我觉得这更像是一个 Javascript 问题,而不是 leafletJS 特定问题,所以我研究了 abort() 但我不知道如何将它应用于 LeafletJS

编辑:这是我目前查询 WMS 服务的代码(该服务是私有(private)的)

$scope.makeWMSLayer = function (layerInfo) {

if (layerInfo == null)
return false;

var uri = apiUrl+"/WMSService/";
var options = {
layers: layerInfo.Name,
maxZoom: layerInfo.maxZoom || 20,
minZoom: layerInfo.minZoom || 11 ,
format: 'image/jpeg',
transparent: true
};
var layer = L.tileLayer.wms(uri, options);

layer.on({
load: function () { self.layersLoading[layerInfo.Name] = false; digest(); },
loading: function () { self.layersLoading[layerInfo.Name] = true; digest(); }
});

/*keep current active layer inside a $rootScope variable*/
$rootScope.activeLayer = layer;

return layer;
};

最佳答案

如果您使用 jQuery 获取 JSON 数据,您应该使用 $.ajax 而不是其他(如 $.getJSON 等),并将其存储为值。

喜欢

var jqXHR = $.ajax({ [...] }, [...]);

然后中止它:

jqXHR.abort();

编辑:

TileLayer不提供任何ajax请求。它只是为图 block 分配一个“src”属性。

除非您想通过例如实现自己的异步(预)加载扩展 TileLayer,window.stop() 是您唯一的选择。

关于javascript - 如何停止待处理的ajax请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33002083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com