我有一个简单的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
});
但后来我似乎失去了呼叫的异步性质。
答案 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
});