我试图在checkLoginStatus
函数中调用getUserAlbum
函数,在getUserAlbum
我正在捕获checkLoginStatus
的响应返回,并代表我需要的响应在getUserAlbum
函数下工作。
但问题是这个getUserAlbum
函数不会等待响应并执行我不想要的下一行。
这是我的职能:
var accessToken = '';
checkLoginStatus = function () {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
accessToken = response.authResponse.accessToken;
console.log(accessToken + ' => in check login status');
return accessToken;
} else {
return false;
}
});
}
getUserAlbum = function () {
var token = checkLoginStatus();
console.log(token + ' => in get album function'); // it log undefined here that is why else part executes.
if(token) {
FB.api(
"/me/albums/", {'accessToken': token},
function (response) {
if (response && !response.error) {
console.log(response);
}
}
);
} else {
alert("You are not logged in");
}
}
有人可以帮我解决这个问题。
答案 0 :(得分:2)
FB.getLoginStatus
是异步的...使用callbacks
作为response
的{{1}} api将是异步的。您无法确定何时会收到。
您的功能已执行,并且在收到FB
之前会返回控制权,因此它将为response
。
在undefined
中,您传递callbacks
,因为参数将在稍后的程序中执行。
function