Facebook Javascript - 高分API - 找到分数但无法返回分数

时间:2012-04-14 10:51:05

标签: facebook-javascript-sdk

我正经历一个非常奇怪的问题。我想通过FB api登录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加载后,我调用此函数。扼杀,这个没有返回,但是当我提醒或控制台记录回调中的值时,它会显示我的分数。

任何人都可以帮忙吗?

雅各

1 个答案:

答案 0 :(得分:1)

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

在你的情况下,我认为你可以在returnhighscore函数的范围内声明一个变量,然后进行FB.api调用,在你的回调函数中更新这个变量的值,最后返回变量(再次在你身上)功能范围):

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;
}