从js中的参数函数返回值

时间:2011-03-29 15:29:49

标签: javascript facebook

我想返回一个回调函数的值,如下所示。无法理解如何使其工作(仅为解释目的而实施)

console.log( hasLogin() );

function hasLogin(){
  FB.getLoginStatus(function(response) {
    if (response.session) {
        return true;
      } 
    else {
      return false;
  }
});

}

在实践中,我希望hasLogin()返回true是response.session存在/是真。

谢谢!

3 个答案:

答案 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");
        }
    });
}