jQuery循环遍历JSON文件并在继续之前解析

时间:2014-05-05 14:53:56

标签: jquery

我有一个简单的jQuery脚本来解析一些json文件:

var jsonData = {};

$.when(
    $.getJSON('data/file1.json', function(data) {
        jsonData['file1'] = data;
    }),
    $.getJSON('data/file2.json', function(data) {
        jsonData['file2'] = data;
    })
).then(function() { 
    // do stuff
});

我想做的是通过循环遍历文件列表使其更具可扩展性。

我试过这个:

var jsonData = {};
var files = ['file1.json', 'file2.json'];

$.when(
    $.each(files, function( index, value ) {
        $.getJSON('data/' + value, function(data) {
            jsonData[value] = data;
        })
    })
).then(function() { 
    // do stuff
});

但后来我似乎失去了呼叫的异步性质。

1 个答案:

答案 0 :(得分:2)

试试这个:

var jsonData = {};
var files = ['file1.json', 'file2.json'];

// make array of promises

gets=$.map(
    files,
    function(f){ 
        return $.getJSON('data/'+f, function(data) {
            jsonData[f] = data;
        });
    }
);

$.when
    .apply(null,gets)
    .then(function() { 
        // do stuff
    }).fail(function() {
        // handle error
    });