getJSON请求循环遍历参数数组,每次调用之间有延迟

时间:2014-04-03 21:11:48

标签: javascript jquery ajax json loops

任何人都可以帮助我理解为什么下面的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();

在我的脑海里,这样就流了下来:

  1. 第一次调用地理编码
  2. 发出Ajax请求
  3. 成功(后来是一段任意时间)我读了结果
  4. 增加索引
  5. 如果我们还没有花费数组,请设置另一个地理编码调用,以便在1秒内启动
  6. 供参考:&#34;数据&#34;是英国邮政编码的嵌套数组,我试图检索使用Google地理编码API的坐标。

1 个答案:

答案 0 :(得分:3)

您不断设置新的间隔,也不会取消上一个间隔。您应该使用clearInterval()取消间隔,或使用setTimeout之一。

如果使用间隔,则在设置间隔时保存值:

var intervalId;
....
intervalId = setInterval(...);

然后

clearInterval(intervalId); 

当您需要新的间隔时。 或使用setTimeout()并根据需要重新发放。