2016-09-28 6 views
0

Ich versuche, ein Benutzer-Token mithilfe einer Back-End-API zu validieren. Ich bin ganz neu bei Angular2. Meine Frage ist, wenn ich möchte, dass isValidToken einen booleschen Wert zurückgibt, ob das angegebene Token gültig war oder nicht, wie kann ich warten, bis der HTTP-Aufruf abgeschlossen ist, bevor ich im Ergebnis von isValidToken() zurückkomme?Angular2 HTTP Get Observable - So warten Sie auf das Ergebnis

isValidToken(token: string): boolean { 
    var isValidToken: boolean = false; 
    this.getIsValidToken(token).subscribe(
     data => { 
      isValidToken = data.isValidToken; 
      return isValidToken; 
     }, 
     error => { 
      return false; 
     } 
    ); 
} 

getIsValidToken(token: string) { 
    return this.http.get(this.validateTokenUrl + '?tokenString=' + token) 
     .map(res => res.json()); 
} 

Antwort

1

isValidToken muss Observable<boolean> oder Promise<boolean> zurückzukehren. Es kann den Wert nicht synchron zurückgeben, da für das Ergebnis eine asynchrone Methode verwendet wird.

Es ist Schildkröten den ganzen Weg hinunter.

+0

Ja, ich habe das alles gelesen. Können Sie ein Beispiel geben, wie ich den zurückgegebenen Wert in einer anderen Methode verwenden kann? – blgrnboy

0
isValidToken(token: string): boolean { 
    return this.getIsValidToken(token); 
} 

getIsValidToken(token: string) { 
    return this.http.get(this.validateTokenUrl + '?tokenString=' + token) 
     .map(res => res.json()); 
} 

dann können Sie es verwenden, wie

someMethod() { 
    this.isValidToken.subscribe(token => { 
    if(token) { 
     this.success = true; 
     // or some other code that should be executed when `token` is `true` 
    } else { 
     this.success = false; 
     // or some other code that should be executed when `token` is `false` 
    } 
    }, 
    error => { 
     this.success = false; 
     // or some other code that should be executed when `token` is `false` 
    }); 
} 

Sie nicht die Ausführung von einem asynchronen Aufruf synchronisieren gehen kann. Alles, was Sie tun können, ist, das Observable (oder das Versprechen) zurückzugeben, damit der Aufrufer einen Rückruf abonnieren und registrieren kann, der aufgerufen wird, wenn Datenereignisse ausgegeben werden oder Fehler auftreten.

Verwandte Themen