0

我有一個網站,它必須檢查用戶是否喜歡我的Facebook粉絲頁面。我寫一個JS functionFB.api()FQLFB.api異步問題

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()); 

它總是給我不確定,並發現FB.api()運行的異步功能所以一旦console.log()被調用,它就不會返回任何東西。

如何禁用FB.api()調用的async屬性?

回答

0

你不能(也不應該)禁用它,你必須處理異步代碼。例如,您可以在響應函數中調用另一個函數。或者,你可以添加一個帶參數的回調:

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

checkIsLike(function (response) { 

}); 

雖然在這種情況下,我只想用一個第二函數,而不是一個匿名函數的回調參數。或者 - 如果您只需要跟蹤響應,請將「console.log」放在API調用的回調函數中。