我想返回一个回调函数的值,如下所示。无法理解如何使其工作(仅为解释目的而实施)
console.log( hasLogin() );
function hasLogin(){
FB.getLoginStatus(function(response) {
if (response.session) {
return true;
}
else {
return false;
}
});
}
在实践中,我希望hasLogin()返回true是response.session存在/是真。
谢谢!
答案 0 :(得分:2)
getLoginStatus
正在调用您的匿名函数,该函数返回true或false,而不是hasLogin
。 hasLogin实际上正在返回undefined
。由于这是异步发生的,你需要做这样的事情:
FB.getLoginStatus(function(response) {
console.log(response.session);
});
异步调用可能很难处理。
答案 1 :(得分:2)
你没有 - 因为getLoginStatus
被设计为异步,结果根本就不可用。最好的策略是保持异步:
function checkLogin(result_callback) {
FB.getLoginStatus(function(response) {
result_callback(!!response.session);
}
}
check_login(function(result) {console.log(result);});
这就是通常在JavaScript中完成的方式。当然,它会迫使您重新考虑代码流。
答案 2 :(得分:2)
你不能真的这样做,因为getLoginStatus
异步运行,这就是它提供回调函数的原因。
你能做的是:
function hasLogin(){
FB.getLoginStatus(function(response) {
if (response.session) {
console.log("got session");
}
else {
console.log("got no session");
}
});
}