getJSON 请求循环遍历参数数组,每次调用之间都有延迟
getJSON requests looping through an array of parameters with delay between each call
谁能帮助我理解为什么下面的jQuery/Javascript代码,而不是以每秒1的节奏节拍率运行,而是有这种级联雪崩般的ajax调用(慢到每秒很多)?
var i = 0, l = data.length;
function geocode() {
$.getJSON(
'https://maps.googleapis.com/maps/api/geocode/json',
{
key: "xxxxx",
sensor: false,
address: data[i][3],
region: 'gb'
},
function(d, textStatus, jqXHR) {
if(d["status"] == "OK") {
console.log(data[i][3]);
console.log(d["results"][0]["geometry"]["location"]);
i++;
if(i < l) { window.setInterval(geocode, 1000); }
}
}
);
}
geocode();
在我的脑海中,这是这样流动的:
- 首次调用地理编码
- 发出 Ajax 请求
- 成功后(这是任意时间后),我阅读了结果
- 递增索引
- 如果我们尚未耗尽数组,请将另一个地理编码调用设置为在 1 秒后开始
供参考:"data"是英国邮政编码的嵌套数组,我正在尝试使用Google的地理编码API检索坐标。
您不断设置新的间隔,并且永远不会取消前一个间隔。您应该使用 clearInterval()
取消间隔或使用一次性setTimeout
。
则在设置间隔时保存值:
var intervalId;
....
intervalId = setInterval(...);
然后
clearInterval(intervalId);
当您需要新的间隔时。或者使用setTimeout()
并根据要求重新签发。
相关文章:
- 在Jquery调用之间添加其他函数
- new Datamap() 在调用之间保持内存的共享状态
- 此函数调用之间有什么区别
- AngularJS:js-factory service在调用之间的流程
- (html) Google 地图搜索结果与 Maps/地点 API 调用之间的差异(结果较少)
- Javascript 原型和调用之间的区别
- 如何在函数调用之间设置超时
- Ajax 调用,Java Script Ajax 调用和 JQuery Ajax 调用之间的区别
- 我的 javascript 变量在函数调用之间变得未定义
- 两种形式的自调用函数调用之间的区别是什么
- 在调用之间注入函数
- 在调用之间持久化安全令牌
- 工作灯适配器调用之间的进度条
- 在MVC控制器和JavaScript Ajax调用之间需要身份验证
- JavaScript:在调用之间保存变量的值
- Google apps脚本:如何在不同的函数调用之间在电子表格中持久化数据
- 值在ajax调用之间不会改变
- 在函数的初始化和调用之间重新定义函数
- 在javascript中保存ajax调用之间的状态
- ajax和getJSON调用之间的区别