0

我有這樣的代碼:返回查詢結果使用自定義功能

getThirdPartyID : function() {      
    return FB.api("/me?fields=third_party_id", function (userData) { 
     console.debug("Your Facebook ThirdPartyId is: " + userData["third_party_id"]); 
     return userData["third_party_id"]; 
    }); 
}, 

但它返回空。這個代碼有什麼問題?我如何使用相同的想法訪問它? tnx

回答

4

FB.api是對Facebook API進行異步請求並返回任何內容的函數。您只能在callback之內獲得結果。你應該充分利用來實現這種不同的方法:

var someObj = { 
    getThirdPartyID : function (thirdPartyIDCallback) { 
    return FB.api("/me?fields=third_party_id", function (userData) { 
     console.debug("Your Facebook ThirdPartyId is: " + userData["third_party_id"]); 
     thirdPartyIDCallback(userData["third_party_id"]); 
    }); 
    } 
} 

var handleThirdPartyID = function(thirdPartyID){ 
    // do something with thirdPartyID 
    alert(thirdPartyID); 
} 
someObj.getThirdPartyID(handleThirdPartyID); 
+0

開箱即用! Ur一個js忍者! tnx – zsitro 2012-02-01 13:14:15

1

FB.api工作異步。這意味着你的函數在FB.api回調函數返回之前返回。

您應該將FB.api的返回值設置爲一個變量或調用FB.api回調函數中的其他函數。

function GetUserData(val){ 
alert(val); 
} 
getThirdPartyID : function() {      
    FB.api("/me?fields=third_party_id", function (userData) { 
     console.debug("Your Facebook ThirdPartyId is: " + userData["third_party_id"]); 
     GetUserData(userData["third_party_id"]); 
    }); 


}; 
+0

感謝大概這個答案是一樣的第二個。它幫助了我! – zsitro 2012-02-01 13:15:13