Javascript js中参数函数的返回值

Javascript js中参数函数的返回值,javascript,facebook,Javascript,Facebook,我想返回回调函数的值,如下所示。无法理解如何使其仅用于解释目的 console.log( hasLogin() ); function hasLogin(){ FB.getLoginStatus(function(response) { if (response.session) { return true; } else { return false; } }); } 实际上,我希望hasLogin返回true is re

我想返回回调函数的值,如下所示。无法理解如何使其仅用于解释目的

console.log( hasLogin() );

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

}
实际上,我希望hasLogin返回true is response.session exists/is true

谢谢

getLoginStatus正在调用匿名函数,该函数返回的是true或false,而不是hasLogin。hasLogin实际上返回的是未定义的。由于这是异步发生的,因此需要执行以下操作:

FB.getLoginStatus(function(response) {
    console.log(response.session);
});
异步调用可能很难处理。

getLoginStatus正在调用匿名函数,该函数返回的是true或false,而不是hasLogin。hasLogin实际上返回的是未定义的。由于这是异步发生的,因此需要执行以下操作:

FB.getLoginStatus(function(response) {
    console.log(response.session);
});
异步调用可能很难处理。

您不需要这样做-因为getLoginStatus被设计为异步的,所以结果还不可用。最好的策略是保持异步:

在JavaScript中通常就是这样做的。当然,这会迫使您重新思考代码流。

您没有这样做-因为getLoginStatus被设计为异步的,所以结果还不可用。最好的策略是保持异步:


在JavaScript中通常就是这样做的。当然,它迫使您重新考虑代码流。

您不能真正做到这一点,因为getLoginStatus异步运行,这就是它提供回调函数的原因

您可以做的是:

function hasLogin(){
    FB.getLoginStatus(function(response) {
        if (response.session) {
            console.log("got session");
        } 
        else {
            console.log("got no session");
        }
    });
}

您不能真正做到这一点,因为getLoginStatus异步运行,这就是它提供回调函数的原因

您可以做的是:

function hasLogin(){
    FB.getLoginStatus(function(response) {
        if (response.session) {
            console.log("got session");
        } 
        else {
            console.log("got no session");
        }
    });
}

当然,我就是这么说的。我需要的是让hasLogin返回所述的true或false。hasLogin正在调用异步运行的方法。没有真正好的方法来做你想做的事情,这只是异步调用的本质。Facebook可能会遭到猛烈攻击,getLoginStatus可能需要几秒钟才能返回,你永远也不知道。当然,这就是我告诉你的。我需要的是让hasLogin返回所述的true或false。hasLogin正在调用异步运行的方法。没有真正好的方法来做你想做的事情,这只是异步调用的本质。Facebook可能会遭到猛烈攻击,getLoginStatus可能需要几秒钟才能返回,你永远不知道。是的,我做过类似的事情。我的异步调用处理返回的数据。谢谢。是的,我做过类似的事情。我的异步调用处理返回的数据。谢谢