0

사용자가 내 페이스 북 팬 페이지를 좋아하는지 확인해야하는 웹 사이트가 있습니다. 그리고 나는 FB.api()JS functionFQLFB.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) { 

}); 

있지만이 경우에는 그냥 두 번째 함수 대신 익명 함수와 콜백 매개 변수를 사용합니다. 또는 응답을 추적하기 만하면 API 호출의 콜백 함수에 "console.log"를 넣으십시오.