$ .each完成使用promise后运行jquery函数

时间:2013-07-23 19:14:38

标签: jquery loops each promise

我有一个拉动foursquare信息的每个循环。它看起来类似于以下内容:

$.getJSON('https://api.foursquare.com/v2/venues/search?search_string_here',    
 function(data) {
     $.each(data.response.venues, function(i,venues){
          var content = foursquare stuff;
          $(content).appendTo("#fourSquare");
     });
});

我需要在每个循环完成后启动一个函数。如果放在每个循环之后,这可以工作:

$( "#fourSquare" ).promise().done(function() {
    //do stuff
});

我不熟悉promise - 奇怪的是它适用于任何选择器。两个问题:

1)这是进行每次回调的最佳方式吗? 2)这里的选择器是什么?每个都没有迭代已经存在的元素,所以我不确定“承诺”是什么

2 个答案:

答案 0 :(得分:3)

$.getJSON将返回您可以使用的承诺。在回调之后,这将被称为

var $ajax = $.getJSON('url', function(data){
    // your $.each
});

$ajax.done(function(){
    // do stuff
});

答案 1 :(得分:0)

您应该使用getJSON返回的承诺:

$.getJSON(...)
    .then(function() { $.each(...); })
    .then(function() { ... });