2010-10-21 78 views
-1

我有3個JavaScript方法。javascript異步

isLogin();
login();
reply();

當我執行回覆方法時,首先應該檢查用戶是否登錄。如果用戶登錄,則執行回覆方法。如果用戶沒有登錄,那麼先執行它,然後執行回覆方法。

這些都是異步的Facebook Javascript SDK方法。因此他們不會返回一個值。

如果例如這些不是異步方法,那麼這些可以返回值,我可以像這樣做。

function isLogin(){ 
if(user.islogin()){ 
return true 
} 
else{ 
return false; 
} 

function login(){ 
if(user.hasLogin()){ 
return true; 
} 
else{ 
return false; 
} 

function reply(){ 

if(!isLogin(){ //User is not login 
    if(login()){ //Login User 
     //user has login. now reply 
    sendText(); //any statement which will reply 
    } 
} 

} 

請幫

感謝

+3

與昨天提出的問題不完全相同嗎? – Pointy 2010-10-21 14:48:40

+3

[Javascript異步]的可能重複(http://stackoverflow.com/questions/3982873/javascript-asynchronous) – Pointy 2010-10-21 14:50:03

回答

1

我沒有與Facebook的的JavaScript API的經驗,但看在他們的文檔簡單地說,FB.getLoginStatusFB.login方法事實上的返回值做

異步方法可以返回值,它們只是以「非阻塞」方式執行(主程序流不停止等待它們完成)。這就是使用JavaScript「回調」函數的原因。在發出API請求後,你的腳本可以繼續做其他事情,並且當API返回響應時,回調函數將被觸發。

FB.getLoginStatus(function(response) { 
    if (response.session) { 
    // logged in and connected user, someone you know 
    } else { 
    // no user session available, someone you dont know 
    } 
}); 

內部功能(從功能(響應))是回調函數,當Facebook的API返回它的響應您的腳本,它會火。

調用FB.login方法會彈出一個登錄窗口給用戶。當此窗口打開時(因爲它與程序異步),您的頁面將繼續運行,並且FB.login回調函數將在用戶登錄或取消登錄過程後觸發。

有關如何使用Facebook JavaScript API方法的更多說明,它總是對read the documentation有用。

+0

感謝Brad的幫助。我已經將這些方法寫入了他們的文檔中給出的Facebook。但我不知道如何與回調函數一起管理這些函數。請給我一個粗略的想法。 – Novice 2010-10-21 14:48:54

+0

那麼,我會假設*//沒有用戶會話可用*部分是你想要插入你的* FB.login *邏輯,但我不能寫你的整個應用程序。 :) – 2010-10-21 14:56:13