我正在尝试从Facebook获得喜欢的帖子数。
Facebook的电话正常运行。问题在于所有调用都是异步的。
我在帖子中有一个循环,每个帖子都应该返回点赞的次数...但是由于调用是异步的,因此循环完成后我就可以得到这个数字。
我已经有回调函数,现在有$.Deferred
,但仍然无法正常工作。
有人可以帮助我吗?我的错误在哪里?
在此先感谢您的支持。
$(document).ready(function() {
$.ajax({
url: 'https://connect.facebook.net/en_US/sdk.js',
dataType: 'script',
cache: true,
success:function(script, textStatus, jqXHR) {
FB.init({
appId : '{my-app-id}',
xfbml : true,
version : 'v3.1'
});
// Call feed from Facebook
callFBApi();
}
});
});
function callFBApi() {
FB.api(
'{my-feed-call}',
function (response) {
if (response && !response.error) {
var posts = [];
posts = response.data;
getFieldsFromPost(posts);
}
}
);
}
function getFieldsFromPost(posts) {
var likes = 0;
$.each(posts, function(index, post) {
var combinedPromise = $.when(getLikesFromPost());
combinedPromise.done(function(data){
likes = data;
console.log('New value:' + likes);
});
console.log(likes);
console.log('Index: ' + index);
});
}
function getLikesFromPost() {
var deferred = $.Deferred();
// Get number of likes from post by id
FB.api(
'{my-post-call}',
function (postResponse) {
if (postResponse && !postResponse.error) {
deferred.resolve(postResponse.summary.total_count);
}
}
);
return deferred.promise();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>