JS.While循环使tab崩溃



我会发疯的。我正在编写代码,循环地从服务器获取数据,如果我使用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崩溃

如果我使用for loop

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"循环。

使用

可以得到与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调用完成,回调被调用,但由于这个循环无限回调将永远不会在javascript单线程执行中被调用,并且i永远不会被增加。同时,无限数量的zz.api被调用,导致许多ajax调用,这有助于更容易崩溃。

你们忘记了" break ";标签,它结束循环。没有它,它就会崩溃。你也可以做一个do while循环,效果很好

最新更新