Я пытаюсь получить количество лайков от 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>