我会发疯的。我正在编写循环从服务器获取数据的代码,如果我使用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”循环而死亡。
答案 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调用,这有助于更容易崩溃。