是否可以将这种方法替换为url字符串:

    $.when($.getJSON(url0), $.getJSON(url1), $.getJSON(url2), $.getJSON(url3)).then(function() { ...


使用另一个JSON文件?

为什么?网址项目的数量发生了变化,我想从一个文件中提取它们,而无需每次修改此代码的位置。我可能正在处理url0-url3或url0-40,然后再返回url0-url20。

当前方法强制对用于构建url字符串的数组进行手动更新以及对该函数的更新。

你有什么建议?

最佳答案

也许是这样的吗?

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);
});

关于javascript - 可以动态创建getJSON url字符串吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29040753/

10-10 01:51