任何人都可以帮助我理解为什么下面的jQuery / Javascript代码,而不是以节奏1-per-second-beat的速度运行,而是有这种级联的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();
在我的脑海里,这样就流了下来:
供参考:&#34;数据&#34;是英国邮政编码的嵌套数组,我试图检索使用Google地理编码API的坐标。
答案 0 :(得分:3)
您不断设置新的间隔,也不会取消上一个间隔。您应该使用clearInterval()
取消间隔,或使用setTimeout
之一。
如果使用间隔,则在设置间隔时保存值:
var intervalId;
....
intervalId = setInterval(...);
然后
clearInterval(intervalId);
当您需要新的间隔时。
或使用setTimeout()
并根据需要重新发放。