2016-09-28 22 views
0

バックエンドAPIを使用してユーザートークンを検証しようとしています。私は一般的にAngular2の新機能です。私の質問は、もしisValidTokenが、提供されたトークンが有効かどうかのブール値を返すようにしたいのですが、isValidToken()の結果を返す前にHTTP呼び出しが完了するのを待つ方法はありますか?Angular2 HTTP Observableを取得する - 結果を待つ方法

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()); 
} 

答えて

1

isValidTokenObservable<boolean>またはPromise<boolean>を返す必要があります。結果として非同期メソッドに依存するため、値を同期的に返すことはできません。

これは、すべての方法で亀です。

+0

はい、私はそれをすべて読んできました。あなたは別の方法で返された値をどのように使うことができるかについての例を挙げることができますか? – 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()); 
} 

その後、あなたは非同期呼び出しからの実行を同期するために行くことができない

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` 
    }); 
} 

のようにそれを使用することができます。あなたが行うことができるのは、呼び出し元がデータイベントが発行されたときやエラーが発生したときに呼び出されるコールバックを登録して登録できるようにするための観測可能なもの(または約束)を返すことだけです。

関連する問題