Angular

di il
2 risposte

Angular

Ciao a tutti,
Sono entrato da poco nel mondo Angular e mi sto imbattendo in un problema che non riesco proprio a risolvere.

Ho creato un service chiamato UtentiService dove all'interno invoco un servizio rest che mi restituisce la lista degli utenti registrati.

  getUtenti() : Utente[]{
    let data =  this.http.get(this.API).subscribe((data) => {
      let output = data['utenti'];
      for (var i = 0; i < output.length; i++){
        let utente = <Utente> output[i];
        this.listaUtenti.push(utente);
      }
    });
Questo metodo lo chiamo da un component.ts

getUtenti(){
  this.listaUtenti = this.serviceUtente.getUtenti();
    console.log("Risultato utenti" +JSON.stringify(this.listaUtenti));
Il getUtenti non aspetta che finisca il "this.serviceUtente.getUtenti()" e di conseguenza la listaUtenti sarà sempre vuota.
Infatti se metto un timeout al mio getUtenti funziona.

    setTimeout(() => {
      console.log("Risultato utenti" +JSON.stringify(this.listaUtenti));
  }, 300);
Mi chiedevo, ci sta un modo per risolvere questo problema oppure devo giocare con gli eventEmitter? Grazie mille a tutti

Ciao
GreyDiamond

2 Risposte

  • Re: Angular

    Devi usare promise.
    Cerca angular promise
  • Re: Angular

    Ciao Tropenix,
    Grazie mille per la risposta. Ho accettato il tuo consiglio e ho risolto con l'async await .
Devi accedere o registrarti per scrivere nel forum
2 risposte