Folosesc Angular și Firebase pentru aplicația mea web. Apel o funcție a unui serviciu (A-service.ts) de la constructorul unei clase de componente (A-component.ts) pentru a obține un nume de utilizator.
Cod constructor:
constructor(private aService: AService, private firebase: AngularFireDatabase) {
this.userName = aService.getUserName(firebase)[0]; }
Cod de serviciu:
var user = [];
var query = firebase.database.ref("Users").orderByKey();
query.once("value")
.then(function (snapshot) {
snapshot.forEach(function (childSnapshot) {
var key = childSnapshot.key;
var childData = childSnapshot.val();
if (key = localStorage.getItem("LoggedUser")) {
user.push(childData.Name);
}
});
});
return user;
}
Deci problema cu codul este că în cadrul metodei de serviciu, query.once
se comportă asincron și, prin urmare, nu pot returna utilizatorul corect la constructor.
Poate cineva să sugereze o soluție la aceeași.?