Ich entwickle eine Single Page Application mit AngularJS.Initialize Current User Service bei Application Start in AngularJS
Wenn sich ein Benutzer erfolgreich anmeldet, wird ein Sicherheitstoken in einem Cookie gespeichert. Wenn er nun die Seite aktualisiert, wird das Token an das Backend gesendet, das ein JSON-Objekt "currentUser" zurückgibt, das alle relevanten Informationen über den aktuellen Benutzer enthält (als Name, Zugriffsgruppen, Profilbild usw.).
Das Problem ist, dies ist ein asynchroner Prozess natürlich, wenn der Controller einen anderen Vorgang startet, sagen wir nur den Namen des Benutzers, dieser Wert wird zu diesem Zeitpunkt undefiniert sein.
Natürlich könnte ich eine Zeitüberschreitung einstellen, aber gibt es eine bessere Lösung?
Ich dachte über einen "currentUserService" nach, der zuerst initialisiert (sendet das Cookie und füllt die Benutzerinformationen mit der Backend-Antwort) und kann erst nach Abschluss dieser Initialisierung verarbeitet werden.
Aber wie kann das gemacht werden? Oder gibt es noch andere Möglichkeiten?
edit: Hallo Jungs, Dank für die Eingabe!
Ihre beiden Vorschläge scheinen für asynchrone Anfragen in der Regel sehr vielversprechend zu sein, aber ich denke, dass sie nicht perfekt für meine Sorge könnte passen:
Die Informationen über den aktuellen Benutzer nur haben, einmal angefordert werden so möchte ich sie für die gesamte Anwendung (zB im rootScope oder einem Dienst) von jedem Controller zugänglich machen, ohne sie in jedem Controller erneut anfordern zu müssen (wie im Callback oder Resolve-Lösung) aber dafür sorgen Es wird keine "Timeout" -Probleme geben. Hast du eine Idee?