我试图从JSON文件中获取一个数组,我注意到每次我得到它都是在不同的顺序。经过一些研究后我发现了这个问题:
我的变量 i (循环索引)获得第二个getJSON后的随机值。
$.getJSON('*******',
function(data) {
for(var i=0;i<data['****'].length;i++){
console.log('1:'+i);
(function(i){
console.log('\n');
$.getJSON('**********',
function(data2) {
console.log('2:'+i);
});
})(i);
}
});
在第一个console.log上,它以正确的方式显示0到128之间的数字。问题是,当它进入第二个console.log时,它显示如下:
70到128然后0到70
在其他帖子中,人们说包括(function(i){})(i)应该解决这个问题,但它对我的代码没有用。
有什么想法吗?
答案 0 :(得分:0)
这是在黑暗中的完整镜头,但尝试......
$.getJSON('*******',
function(data) {
for(var i=0;i<data['****'].length;i++){
console.log('1:'+i);
(function(j){
console.log('\n');
$.getJSON('**********',
function(data2) {
console.log('2:'+j);
});
})(i);
}
});
这将保护您的内部功能不必处理传入的值和全局值。 (请注意,我在节功能中将i更改为j。