2016-06-27 5 views
0

Hallo, ich bin ein FB-Login-Flow auf meiner Website mit React implementieren. Wenn auf die Schaltfläche geklickt wird, ruft sie eine externe JS-Datei auf, die den Anmeldefluss startet. Mein Problem ist, dass ich true/false zurückgeben muss, um zu sehen, ob sie sich erfolgreich angemeldet haben und dann eine react-Komponente rendern, aber die JS-Funktion gibt sofort undefined oder false zurück und wartet nicht auf den FB-API-Aufruf. Die Funktion sieht wie folgt ausJavascript-Funktion nicht auf FB Api Anruf warten, um vor der Rückkehr zu bewerten

login: function(){ 
console.log('login'); 
FB.login(function(response){ 
    if(response.authResponse){ 
    return(externalScriptThatImIn.checkLoginStateStarter()); 
    } 
},{scope:"public_profile,email"}); 
}, 

und dann der Funktion es kehrt eine andere Funktion aufruft, die zu einer Rückkehr geht schließlich wahr oder falsch ist, basierend auf, wenn sie angemeldet wurde, aber selbst wenn ich wahr sagen zurückkehren; direkt im FB.login-Aufruf wartet es nicht darauf, dass es vor der Rückgabe ausgewertet wird und kehrt unbestimmt zurück. Gibt es irgendwie, um es zu warten zu zwingen?

+1

http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call/14220323# 14220323 – Teemu

Antwort

0

Sie können einen Callback übergeben und den Wert mithilfe des Rückrufs zurückgeben.

login: function(cb) { 
    console.log('login'); 
    FB.login(function(response) { 
     if (response.authResponse) { 
     return cb(externalScriptThatImIn.checkLoginStateStarter()); 
     } 
    }, { 
     scope: "public_profile,email" 
    }); 
    } 

Sie können es nennen wie

login(function(status){ 
    if (status){ 
     console.log('Logged in'); 
    } 
}); 
Verwandte Themen