webentwicklung-frage-antwort-db.com.de

angle2 warten, bis observable in if-Zustand beendet ist

Ich habe eine if-Anweisung wie diese implementiert

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

diese if-Bedingung wartet auf eine Antwort vom Backend. Bevor das Observable ausgeführt wird, geht es in die else-Anweisung und beendet die Bedingung, ohne die if-Bedingung beim Start zu überprüfen.

dies ist meine beobachtbare Methode, um die Daten vom Backend abzurufen

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

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

Wie soll die Bedingung warten, bis sie die Antwort vom Backend erhält?

20
kohli

Sie können nicht warten, bis ein Observable oder Promise abgeschlossen ist. Sie können es nur abonnieren, um benachrichtigt zu werden, wenn es ein Ereignis abschließt oder auslöst.

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

dann kannst du machen

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

aber wenn der Aufrufer dieses Codes auch vom Rückgabewert abhängt, müssen Sie dies erneut tun

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

und dann die subscribe(), wo Sie diesen Code aufrufen

24