当getJSON URL的数量是可变的时,如何使用$ .when?

时间:2014-10-16 16:53:39

标签: javascript jquery json

我用getJSON链接.when次请求。

代码与此类似:

 $.when( $.getJSON(url0),$.getJSON(url1), $.getJSON(url2)).done( function() {
    $.each(arguments, function(index, result) { …

如果URL集包含url3或url4或更多,或者只包含url0,我该怎么写呢?

我将url vars存储在文件或本地存储中。

1 个答案:

答案 0 :(得分:2)

  var list = ['obj1', 'obj2', 'obj3', 'obj4', 'obj5'];
  var callback = function() {
    console.log("done");
  };
  var requests = [];

    for(i = 0; i < list.length; i++) {
      requests.push($.ajax({
        url: 'url',
        success: function() {
          console.log('suc');
        }
      }));
    }

  $.when.apply(undefined, requests).then(function(results){callback()});

你可以给我一些更多细节,这样我就可以在数组中加载它,并可以告诉你它是如何工作的

JSFIDDLE DEMO:http://jsfiddle.net/MBZEu/4/

或者你可以尝试

  var urlArr = ['url1', 'url2', 'url3', 'url4', 'url5'];
  var callback = function() {
    console.log("done");
  };
  var requests = [];

    for(i = 0; i < urlArr.length; i++) {
      requests.push($.getJSON(urlArr[i])); //or something similar which can push url in array
    }

  $.when.apply(undefined, requests).then(function(results){callback()});

或者用它来查看req

的最新情况
requests.push($.getJSON(urlArr[i], function(res){console.log(res)}));