2017-06-25 20 views
0

私はフロントエンドにng2-ui-authを使用していますが、問題を見つけました。修正方法はわかりません...これはシンプルですメソッドを私のUserServiceから取得しますが、キャッチがあります。非同期メソッドが呼び出されて、http.get呼び出しに必要なトークンが1つ取得されます。http.getを返す前に非同期データを待つ方法

getUser() 
{ 
    const headers: Headers = new Headers(); 
    headers.append('Accept', 'application/json'); 
    headers.append('Content-Type', 'application/json'); 
    headers.append('X-Auth-Token', this.authService.getToken()); 

    const options = new RequestOptions({headers: headers}); 

    return this.http.get('http://localhost:9900/user', options).map(response => response.json()); 
} 

問題がある - 時々http.getがthis.authService.getTokenがデータを返す前に呼び出されているので、私はこのように私を残し、「X-Authの-トークン」内のヌルで終わります "不正なエラーです。

ヘッダが完成するまで待ってからhttp.getを返す方法はありますか?

+0

これは、getUser()自体がプロミスを返すようにリファクタリングする必要があると思います。 authServiceの呼び出しをPromise内に配置し、その後でコードの残りの部分を実行します。 –

+0

getToken()はWebサービスですか? httpリクエストを呼び出す – alehn96

答えて

1

約束と方法を使用して試してみてください。Then()をクリックして応答を収集してください。このように:

+0

ありがとうございます。 this.authService.getToken()はString型であるため、私が購読しているようなメソッドは使用できません。 私はFacebookの承認後すぐにgetUserを呼び出そうとしていますが、ログインするとAuthServiceがデータを配信する準備が整うまでに時間がかかるようです:/ – Jakub

+0

hmmm、別のアプローチは、収集後にgetUserを実装するようですトークンを返し、このauthService.getTokenメソッドをいくつかの約束の実装でラップします。その方法はあなたのものですよね? – Dody

関連する問題