0

我有一个简单的问题,一直在 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 但返回总是将我的变量设置为未定义。我知道脚本是异步运行的,我需要使用回调函数,但我就是做错了。

4

2 回答 2

0

这称为javascript 事件循环。您不能从函数返回 numblike,因为它仅在 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
于 2013-03-20T20:00:13.273 回答
0

您已经贴numblike了两次,只需删除第二次中的 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 回答