从FB获取一个值.带有回调的API

Get a value from FB.api with a callback?

本文关键字:回调 API 一个 获取 FB      更新时间:2023-09-26

我有一个简单的问题,一直在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,但return总是将我的变量设置为undefined。我明白,脚本运行异步,我需要使用回调函数,但我只是不能得到它的权利。

这叫做javascript事件循环。你不能从函数中返回麻木,因为它只在FB.api的回调中设置。你可以做类似的事情- send callback:

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

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

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