2017-07-17 12 views
0

のない私は、この観測可能なhttpリクエストアンギュラ - 観察可能http.getに似ていますが、要求

refreshToken() { 
    return this.http.get(this.siteService.apiDomain() + '/api/token?token=' + localStorage.getItem('JWToken'), {}) 
     .map((response: Response) => { 
      return response; 
     }) 
} 

を持っていると私はこの

return this.refreshTokenService.refreshToken() 
       .flatMap((result: any) => { 
        // if got new access token - retry request 
        if (JSON.parse(result._body).token) { 
         localStorage.setItem('JWToken', JSON.parse(result._body).token); 
        } 
        this.setHeaders(url); 
        return this.request(url, options); 
       }) 

のように観察を呼んだと私の問題があることがあれば、私であります私はrefreshToken()を複数回作ります。私は、偽のhttp呼び出しを作成し、すでに知っているか、何もないトークンを返す方法を見つけたいと思っています。

Observable.empty() // Failed to compile (Type '{}' is not assignable to type 'Response'.) 
Observable.empty().filter(() => {return true}) // Compiles but it stop the flatMap sequence. 

答えて

0

私は、私は完全に理解してないんだけど、多分あなたはObservable.of()をしたいですか?

ここでは、私が使用した場所の例を示します。 Idが0の場合、初期化された製品がObservableとして返されます。

import 'rxjs/add/observable/of'; 
... 

getProduct(id: number): Observable<IProduct> { 
    if (id === 0) { 
     return Observable.of(this.initializeProduct()); 
    }; 
    const url = `${this.baseUrl}/${id}`; 
    return this.http.get(url) 
     .map(this.extractData) 
     .do(data => console.log('getProduct: ' + JSON.stringify(data))) 
     .catch(this.handleError); 
} 
0

私はBehaviourSubjectsの使用をお勧めします、そのコンポーネントのいずれかが破壊されるまで、あなたが最後の値を保存することができますまたはあなたはそれが変更することが直面しています。また、BehaviourSubjectの値が変更されたとき。それを購読しているすべてのコンポーネントも新しいデータを受信します。さらに、サーバーを呼び出す必要はありません。コンポーネントがObservableのような値を取得したい場合は、その値を格納しているので、サーバーを呼び出さずにいつでも値を取得できます。 BehaviourSebject example

関連する問題