我有一个网站,必须检查用户是否喜欢我的脸书粉丝页面。我用JS function
和FB.api()
FQL
function checkIsLike(){
var liked = false;
if(FB_USER_ID){ //the facebook userID
FB.api({
method: 'fql.query',
query: 'SELECT uid FROM page_fan WHERE uid='+FB_USER_ID+' AND page_id=XXXXXXXXXXXXXX',
},function(response){
console.log(response);
if(response){
return true;
}else{
return false
}
});
}else{
return false;
}
}
当我只是检查功能是否有效
console.log(checkIsLike());
它始终给我 undefined ,并发现FB.api()
运行异步函数,因此一旦调用console.log()它就不会返回任何内容。
如何停用async
来电的FB.api()
属性?
答案 0 :(得分:0)
你不能(也不应该)禁用它,你必须处理异步代码。例如,您可以在响应函数中调用另一个函数。或者您可以使用回调添加参数:
function checkIsLike(callback) {
...
function(response) {
callback(response);
...
}
checkIsLike(function (response) {
});
虽然在这种情况下我只使用第二个函数而不是带有匿名函数的callback参数。或者 - 如果您只需要跟踪响应 - 将“console.log”放在API调用的回调函数中。