gpt4 book ai didi

javascript - 在ajax json调用之间添加延迟

转载 作者:行者123 更新时间:2023-12-03 05:24:22 25 4
gpt4 key购买 nike

提前抱歉,如果这不是正确的提问方式,请让我知道如何改进我的问题:)

本质上,我有一个 json 文件,我想从中提取数据(名称、地址等),以便使用 Google map API 函数将它们绘制为标记。这是我当前使用的 ajax 函数:

$.ajax({
url: 'directory.json',
dataType: 'json',
type: 'get',
cache: 'false',
success: function(data) {
$(data.group).each(function(index, person) {
if (typeof person.Address != "undefined") {
geocodeAddress(geocoder, map, person);
}
});
}
});

但是,这是一次为我的所有 800 多个目录条目调用 geocodeAddress 函数,这远远超出了我的 Maps API 查询限制。我想将它们间隔大约 100 毫秒以防止这种情况发生。我尝试使用 setInterval 来完成此操作,但似乎 geocodeAddress 行会同时针对所有条目运行,因此这只会延迟所有函数,而不是每个函数之间的长度。

是否有其他方法可以提取此 json 数据而不是使用 ajax,或者只是单独延迟每个 API 请求的方法?

geocodeAddress 函数供引用(它既可以进行地理编码,也可以绘制标记)

function geocodeAddress(geocoder, resultsMap, person) {

//geocoding address
geocoder.geocode({'address': person.Address[0].text}, function(results, status) {
if (status === 'OK') {

//plotting coordinate as marker
var marker = new google.maps.Marker({
map: resultsMap,
position: results[0].geometry.location,
icon: {
url: person.Image[0].src,
size: new google.maps.Size(120, 150),
scaledSize: new google.maps.Size(30, 38),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(15, 19)
}
});

} else {
console.log("Geocode was not successful for the following reason: " + status);
}
});
}

最佳答案

您可以以 100 毫秒的间隔时间循环调用 geocodeAddress,如下所示,

$.ajax({
url: 'directory.json',
dataType: 'json',
type: 'get',
cache: 'false',
success: function(data) {
var i = 0;
var loop = function(){
if(i < data.group.length){
if (typeof data.group[i].Address != "undefined")
geocodeAddress(geocoder, map, data.group[i]);
i++;
setTimeout(loop, 100);
}
}
loop();
}
});

希望有帮助。

关于javascript - 在ajax json调用之间添加延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41215256/

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