JS。 while循环崩溃选项卡

时间:2014-03-10 17:47:10

标签: javascript loops

我会发疯的。我正在编写循环从服务器获取数据的代码,如果我使用while循环:

var i = 100;

while (200>i) {         
    zz.api("get", {"offset": i, "v": 5.14}, function(data) { 
        ids = ids.concat(data.response.items.map(maps));
        i= i + 100;
        alert(ids.length);
    });
}

在Chrome标签停止响应时,Firefox崩溃。

如果我用于循环

var i = 100;

for (i=100; i<200; i= i+100) {          
    zz.api("get", {"offset": i, "v": 5.14}, function(data) { 
        ids = ids.concat(data.response.items.map(maps));
        alert(ids.length);
    });
}

脚本正确执行。

我做错了什么? 我无法理解,为什么浏览器会因“while”循环而死亡。

1 个答案:

答案 0 :(得分:2)

for相同的结果可以通过

完成
var i = 100;

while (200>i) {         
    zz.api("get", {"offset": i, "v": 5.14}, function(data) { 
        ids = ids.concat(data.response.items.map(maps));
        alert(ids.length);
    });
    i= i + 100;
}

在另一种情况下,while一直无限执行,直到async调用完成并调用回调,但是随着这个循环无限回调将永远不会在javascripts单线程执行中调用,我永远不会得到递增。同时调用无限数量的zz.api,导致许多ajax调用,这有助于更容易崩溃。