web-dev-qa-db-fra.com

angular2 attend que l'observable se termine si l'état

J'ai implémenté une instruction if comme celle-ci

if (this.service.check() ) {
      return true;
    }
    else {
}

cette condition si attend une réponse du backend. Mais avant que l'observable ne soit exécuté, il entre dans l'instruction else et termine la condition sans vérifier la condition if au début.

c'est ma méthode observable pour obtenir les données du backend

public check(){
      this.getActorRole().subscribe(
        (resp => {
          if (resp == true){
             return true
         }

        }),
        (error => {
          console.log(error);
        })
      );
    }
}

Alors, comment faire en sorte que la condition attende d’obtenir la réponse du serveur

20
kohli

Vous ne pouvez pas attendre que Observable ou Promise soit terminé. Vous ne pouvez vous y abonner que pour être averti lorsqu'il termine ou émet un événement.

public check(){
   return this.getActorRole() // <<<=== add return
   .map(resp => {
          if (resp == true){
             return true
         }
      );
    }
}

alors vous pouvez faire

this.service.check().subscribe(value => {
  if (value) {
    return true;
  }
  else {
  }
}

mais si l'appelant de ce code dépend également de la valeur de retour, vous devez à nouveau

this.service.check()
.map(value => {
  if (value) {
    return true;
  }
  else {
  }
}

puis faites la subscribe() où vous appelez ce code

24
Günter Zöchbauer