通过回调从FB.api获取值?

时间:2013-03-20 19:16:15

标签: javascript facebook-graph-api callback facebook-javascript-sdk

我有一个简单的问题,一直在搜索Stack Overflow上有关于这个主题的一些问题,但无法找到可行的解决方案。

我有一个简单的函数来获取Javascript SDK上的页面数量:

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但返回总是将我的变量设置为undefined。我知道脚本运行异步,我需要使用回调函数,但我无法正确使用它。

2 个答案:

答案 0 :(得分:0)

这称为javascript event loop。你不能从函数返回麻木,因为它只在FB.api的回调中设置。 所以你可以这样做 - 只需发送回调:

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

答案 1 :(得分:0)

您已声明numblike两次,只需在第二个中删除var声明:

function getLikes(div, graf) {
  var numblike;
  FB.api(graf, function(response) {
    numblike = response.likes; // var removed
    $(div).prepend(numblike);
  });
 return numblike; 
}
相关问题