2013-07-23 49 views
3

我有一个可以拉取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

当一个元素上时,.promise获取是指当所有排队的方法完成解析延期对象承诺的对象,这样的作为动画。它不会跟踪ajax请求,主要是因为ajax请求不直接链接到元素。 –

回答

3

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

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

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

这太棒了,谢谢! – JCHASE11

+0

不客气! :-D –

0

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

$.getJSON(...) 
    .then(function() { $.each(...); }) 
    .then(function() { ... }); 
相关问题