3

我有一个每个循环来提取四方信息。它看起来类似于以下内容:

$.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)这里正确的选择器是什么?each 没有迭代已经存在的元素,所以我不确定要“承诺”什么

4

2 回答 2

3

$.getJSON将返回一个您可以使用的承诺。这将在回调之后调用。

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

$ajax.done(function(){
    // do stuff
});
于 2013-07-23T19:16:55.460 回答
0

您应该使用返回的承诺getJSON

$.getJSON(...)
    .then(function() { $.each(...); })
    .then(function() { ... });
于 2013-07-23T19:17:31.240 回答