是否可以为url字符串替换此方法:
$.when($.getJSON(url0), $.getJSON(url1), $.getJSON(url2), $.getJSON(url3)).then(function() { ...
使用其他JSON文件?
为什么呢? url项的数量发生了变化,我想从单个文件中提取它们,而不必修改每次代码所在的位置。我可以处理url0-url3或url0-40然后回到url0-url20。
当前的方法强制手动更新用于构建url字符串的数组以及对函数的更新。
你有什么建议?
答案 0 :(得分:1)
也许是这样的?
var urls = [
'http://jsonplaceholder.typicode.com/posts/18',
'http://jsonplaceholder.typicode.com/posts/37'
];
var results = {};
function saveResult(urlPath, data) {
results[urlPath] = data;
}
function f() {
($.when).apply(this, Array.prototype.slice.call(arguments).map(function(urlPath) {
return $.getJSON(urlPath, saveResult.bind(this, urlPath));
})).then(function() {
console.log('Completed fetch', results);
});
}
f.apply(this, urls);
更新:如果您想从文件中抓取网址,这样的内容应该有效:
function makeUrls(cb) {
var urls = [];
var idString1 = '???', idString2 = '????';
$.when($.getJSON('new_name2.json')).then(function(c) {
$.each(c.myStuff, function(f, e) {
urls.push(idString1 + e.id + idString2);
});
cb(urls);
});
}
var results = {};
function saveResult(urlPath, data) {
results[urlPath] = data;
}
function f() {
($.when).apply(this, Array.prototype.slice.call(arguments).map(function(urlPath) {
return $.getJSON(urlPath, saveResult.bind(this, urlPath));
})).then(function() { console.log('DID IT!', results); });
}
makeUrls(function(urls) {
f.apply(this, urls);
});