我有一个拉动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)这里的选择器是什么?每个都没有迭代已经存在的元素,所以我不确定“承诺”是什么
答案 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() { ... });