【发布时间】:2014-04-03 21:11:48
【问题描述】:
谁能帮我理解为什么下面的 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 秒后开始
供参考:“数据”是英国邮政编码的嵌套数组,我正在尝试使用 Google 的地理编码 API 检索坐标。
【问题讨论】:
-
它是如何进入 if 语句的?
1 isn't < 1 -
@ᾠῗᵲᄐᶌ 你读到的“1”实际上是“l”(对于利马)。
-
怎么样?
var i = 0,然后i++; if(i < l)
标签: javascript jquery ajax json loops