我有一个简单的问题,一直在搜索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。我知道脚本运行异步,我需要使用回调函数,但我无法正确使用它。
答案 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;
}