J'aimerais recevoir des données de API avant d'exécuter la fonction suivante dans Angular7
'Data.Service.ts P>
public users constructor(private dataservice: DataService) {} ngOnInit() { this.users = this.dataservice.getData() console.log(this.users) next_function() ....
3 Réponses :
Ce que vous pouvez faire ici est de renvoyer l'observable de l'appel http et de vous abonner à cela.
data.service.ts strong> p> this.dataservice.getData().subscribe(resp => {
this.users = resp; // here you set the users
next_function(); // this function will be called after getting data from the service
});
Si vous voulez coller à la recette Promise / Async / Await, vous pouvez le faire de cette façon:
// service getData() { return this.http.get(this.url).toPromise(); } // component async ngOnInit() { this.users = await this.dataservice.getData(); console.log(this.users); next_function();
Vous n'avez pas besoin d'utiliser async code> /
attendre code> ici du tout. Vous utilisez déjà
topromise code> dans
getdata code> pour convertir l'observable en une promesse. Vous pouvez simplement renvoyer cette promesse et gérer le reste dans le composant.
ngOnInit() {
this.dataservice.getData().then(users => {
console.log(users);
next_function();
}, err => {
console.log(err);
});
}
Faire une fonction async signifie simplement qu'il retourne toujours une promesse et vous pouvez utiliser attendre à l'intérieur. Cela ne rend pas comme par magie ses appelants reçoivent la valeur de manière synchrone, ils doivent encore résoudre la promesse.