Я пытаюсь определить через некоторый флаг, когда эта асинхронная функция заканчивается.Как узнать, когда заканчивается асинхронная функция JavaScript?
Это, как я называю функцию:
// Calling the function in a loop
for (var i=0,l=myIds.length; i<l; ++i) {
install(pageId, myIds[i], apps_num[''+myIds[i]], <?php echo $this->comid ?>, '<?php echo $this->site_url; ?>');
}
И это моя функция:
install: function(pageId, appId, app_num, com_id, siteurl) {
FB.getLoginStatus(function(response) {
// Checking if connected to Facebook
if (response.status === 'connected') {
var uid = response.authResponse.userID;
console.log(response.authResponse);
var userAccessToken = response.authResponse.accessToken;
// Get page access token
FB.api('/'+pageId+'?fields=access_token='+userAccessToken, function(response) {
var pageAccessToken = response.access_token;
// Get information if user got this application
FB.api('/'+pageId+'/tabs/'+appId+'?access_token='+pageAccessToken,
function(data) {
if (data.data.length < 1) {
console.log("Not installed, Installing...");
// Install the application
var params = {};
params['app_id'] = appId;
FB.api('/'+pageId+'/tabs?access_token='+pageAccessToken, 'post', params, function(response) {
if (!response || response.error) {
console.log("Error Installing!");
}
else {
console.log("Installed :)");
}
});
}
else {
console.log("Already installed.");
}
});
});
}
else
if (response.status === 'not_authorized') {
console.log("the user is logged in to Facebook, but not connected to the app.");
}
else {
console.log("the user isn't even logged in to Facebook.");
}
});
}
Как я могу решить эту проблему? Я попытался использовать статические переменные, но я не смог назвать их внутри асинхронной функции.
Когда вызывается обратный вызов, вы знаете, что он закончен. – Pointy
Возможный дубликат [Есть ли способ определить, успешно ли загружен SDK для Javascript Facebook?] (Http://facebook.stackoverflow.com/questions/5334977/is-there-a-way-to-detect-if-the -facebook-Javascript-СДК-загружен-успешно) – ifaour