我正经历一个非常奇怪的问题。我想通过FB api登录facebook时登录用户的高分。我正在使用以下代码
function returnhighscore()
{
FB.api("/"+FB.getUserID()+"/scores", 'get', {}, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
var high_score1 = response.data[0].score;
//document.getElementById("fbtestVal").innerHTML = response.data[0].score;
return(high_score1);
}
});
}
FB加载后,我调用此函数。扼杀,这个没有返回,但是当我提醒或控制台记录回调中的值时,它会显示我的分数。
任何人都可以帮忙吗?
雅各
答案 0 :(得分:1)
回调函数不应返回值。相反,它们应该处理给予它们的任何参数,并且可能与更高范围的变量进行交互。
在你的情况下,我认为你可以在returnhighscore函数的范围内声明一个变量,然后进行FB.api调用,在你的回调函数中更新这个变量的值,最后返回变量(再次在你身上)功能范围):
function returnhighscore()
{
//declare variable in function scope
var highscore = null;
//call facebook api
FB.api("/"+FB.getUserID()+"/scores", 'get', {}, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
var high_score1 = response.data[0].score;
//document.getElementById("fbtestVal").innerHTML = response.data[0].score;
//update value of function scope variable
highscore = high_score1;
}
});
//return updated value
return highscore;
}