2016-05-28 3 views
1

Ich verwende den folgenden Code für die Erstellung von Benutzer:Warum kann mein Code nicht auf Benutzer zugreifen, der gerade erstellt wurde?

firebase.auth().createUserWithEmailAndPassword($scope.data.mail, $scope.data.pwd) 
       .catch(function(error) 
         { 
         }); 

var user; 

while (!user) 
{ 
    user = firebase.auth().currentUser; 
} 

aber ich weiß nicht, warum dieses Mal der Benutzer Variable immer einen Nullwert erhält, und die Schleife nie fertig bekommen. Ich kann dieses Problem derzeit nicht lösen.

Antwort

3

Sie können eine while-Schleife nicht verwenden, um auf ein asynchrones Ergebnis zu warten, da JavaScript in einem einzelnen Thread ausgeführt wird.

Die Schleife wird auf unbestimmte Zeit ausgeführt, was bedeutet, dass die JavaScript-Laufzeit niemals eine Chance hat, das Versprechen zu erfüllen, selbst wenn es abgeschlossen ist.

Sie müssen stattdessen die then Klausel des Versprechens verwenden.

firebase.auth().createUserWithEmailAndPassword($scope.data.mail, $scope.data.pwd) 
    .then(function() { 
    var user = firebase.auth().currentUser; 
    // carry on executing code here 
    }) 
    .catch(function(error) { 
    }); 
+0

Das löste das Problem. Danke vielmals! :) – Kais

Verwandte Themen