Tach!
Was mir bei meinem code noch nicht klar ist ist folgendes Statement:
deferred.resolve(currentUser);
currentUser ist ja true oder false und mir ist nicht klar. was resolve mit dem flag
currentUser ist kein Flag. Die Variable hat nur jemand mit false initialisiert, was augenscheinlich anzeigen soll, dass die Daten vom current User nicht vorhanden sind und sie erst noch abgefragt werden müssen. Besser wäre es, die Variable mit null zu initialisieren. Das ist auch ein falsy Wert, mit dem die if-Bedingung dieselbe Verzweigung nimmt. Aber es hätte vermutlich dich nicht fälschlicherweise zur Annahme kommen lasse, die Variable sei ein boolescher Wert.
Jedenfalls ist der Teil
if(currentUser){
deferred.resolve(currentUser);
}
eine Abkürzung, die das Promise sofort erfüllt, wenn der User bereits früher schon ermittelt wurde. In currentUser stehen bereits dessen Daten (ein Objekt vermutlich), und das ist für das if ein truthy Wert. Das Promise liefert dir in dem Fall den Inhalt von currentUser.
dedlfix.