0

簡単な質問が1つあります。StackOverflowで検索していますが、このトピックに関するいくつかの質問がありますが、実用的な解決策を得ることができません。

JavascriptSDKでページのいいねの数を取得するための簡単な関数があります。

function getLikes(div, graf) {
    var numblike;
    FB.api(graf, function(response) {
        var numblike = response.likes;
        $(div).prepend(numblike);
    });
    return numblike; // can't get it to return
}

var pLike = getLikes ("#mydiv", /app_id); // always undefined

関数は機能し、正しい数値をdivの前に付加しますが、returnは常に変数をundefinedに設定します。スクリプトが非同期で実行され、コールバック関数を使用する必要があることを理解していますが、正しく実行できません。

4

2 に答える 2

0

これはJavaScript イベント ループと呼ばれます。FB.api のコールバックでのみ設定されているため、関数から numblike を返すことはできません。したがって、それと同様のことができます-コールバックを送信するだけです:

function getLikes(div, graf,callback) {
  FB.api(graf, function(response) {
    var numblike = response.likes;
    $(div).prepend(numblike);
    callback(numblike);
  });

}

getLikes ("#mydiv", /app_id,function(numblike){
  alert(numblike);
}); // always undefined
于 2013-03-20T20:00:13.273 に答える
0

2 回宣言しましnumblikeたが、2 回目の var 宣言を削除するだけです。

function getLikes(div, graf) {
  var numblike;
  FB.api(graf, function(response) {
    numblike = response.likes; // var removed
    $(div).prepend(numblike);
  });
 return numblike; 
}
于 2013-03-22T10:45:14.860 に答える