循环索引不能正常工作

时间:2015-12-30 23:18:47

标签: jquery ajax for-loop

我试图从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)应该解决这个问题,但它对我的代码没有用。

有什么想法吗?

1 个答案:

答案 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。