FB.api异步问题

时间:2014-02-13 10:26:52

标签: facebook facebook-graph-api facebook-like facebook-javascript-sdk facebook-fql

我有一个网站,必须检查用户是否喜欢我的脸书粉丝页面。我用JS functionFB.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()属性?

1 个答案:

答案 0 :(得分:0)

你不能(也不应该)禁用它,你必须处理异步代码。例如,您可以在响应函数中调用另一个函数。或者您可以使用回调添加参数:

function checkIsLike(callback) {
    ...
    function(response) {
        callback(response);
    ...
}

checkIsLike(function (response) {

});

虽然在这种情况下我只使用第二个函数而不是带有匿名函数的callback参数。或者 - 如果您只需要跟踪响应 - 将“console.log”放在API调用的回调函数中。