0

私は非常に奇妙な問題を経験しています。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ロード後、この関数を呼び出します。ひどく、これは何も返さないが、コールバック内の値をアラートまたはコンソールログに記録すると、スコアが表示されます。

誰か助けてもらえますか?

ジェイコブ

4

1 に答える 1

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;
}
于 2012-06-18T16:48:54.580 に答える