Facebook javascript sdk Facebook Javascript-High Score API-找到分数但无法返回

Facebook javascript sdk Facebook Javascript-High Score API-找到分数但无法返回,facebook-javascript-sdk,Facebook Javascript Sdk,我正在经历一个非常奇怪的问题。我希望登录用户通过FBAPI登录facebook时获得高分。我正在使用以下代码 function returnhighscore() { FB.api("/"+FB.getUserID()+"/scores", 'get', {}, function(response) { if (!response || response.error) { alert('Error occured');

我正在经历一个非常奇怪的问题。我希望登录用户通过FBAPI登录facebook时获得高分。我正在使用以下代码

    function returnhighscore()
    {
        FB.api("/"+FB.getUserID()+"/scores", 'get', {}, function(response) { 
          if (!response || response.error) {
            alert('Error occured');
          } else {
            var high_score1 = response.data[0].score;
            //document.getElementById("fbtestVal").innerHTML = response.data[0].score;
            return(high_score1);

          }
        }); 
    }
在FB加载之后,我调用这个函数。更糟糕的是,这个函数什么也不返回,但当我在回调中警告或控制台记录值时,它会显示我的分数

有人能帮忙吗


Jacob

回调函数不应该返回值。相反,它们应该处理给定给它们的任何参数,并可能与更高范围的变量交互

在您的情况下,我认为您可以在returnhighscore函数的作用域中声明一个变量,然后进行FB.api调用,在回调函数中更新该变量的值,最后返回该变量(同样在您的函数作用域中):


闭包也是如此。期望“回归”在js中像在java中一样工作是造成这种混乱的典型原因。
function returnhighscore()
{
    //declare variable in function scope
    var highscore = null;

    //call facebook api
    FB.api("/"+FB.getUserID()+"/scores", 'get', {}, function(response) { 
      if (!response || response.error) {
        alert('Error occured');
      } else {
        var high_score1 = response.data[0].score;
        //document.getElementById("fbtestVal").innerHTML = response.data[0].score;

        //update value of function scope variable
        highscore = high_score1;
      }
    });

    //return updated value
    return highscore;
}