我正在经历一个非常奇怪的问题。我希望登录用户在通过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加载后,我调用此函数。当然,这个什么也不返回,但是当我在回调中提醒或控制台记录值时,它会显示分数。
有人可以帮忙吗?
雅 各
回
调函数不应该返回值。相反,它们应该处理提供给它们的任何参数,并可能与更高范围的变量进行交互。
在您的情况下,我认为您可以在 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;
}