2017-09-27 25 views
0

私は2番目の要求これは私がやっているすべてですangular2パス結果

this.runfirstmethod(headers).mergeMap(response => this.http[verb](url, response).map(res => res.json())) 

に渡すために、観察を返す1つの方法の結果を取得しようとしています、私は私を考えますbuildAzureHeadersからヘッダーを取得できないので、何か間違っています。

サービス

buildAzureHeaders(headers): Observable<Headers> { 

    if (headers == null) { 
     headers = new Headers(); 
    } 

    if (JSON.parse(localStorage.getItem('azureToken')).token == null || this.azureAccessToken == null) { 
     this.Adal4Service.acquireToken("https://graph.windows.net").map(token => { 
      this.azureAccessToken = token; 
      localStorage.setItem('azureToken', token); 
      headers.append('Authorization', "Bearer " + token); 
      return Observable.of(headers); 
     }); 
    } else { 
     headers.append('Authorization', "Bearer " + localStorage.setItem('azureToken', JSON.parse(localStorage.getItem('azureToken')).token)); 
     console.log("Headers: " + headers); 
     return Observable.of(headers); 
    } 
} 

invokeRequest(verb, url, headers?, body?): Observable<any> { 
    return this.buildAzureHeaders(headers).switchMap(builtHeaders => this.http[verb](url, builtHeaders)) 
} 

成分

this.ApiAuthService.invokeRequest("get","https://graph.windows.net/aseracare.com/users?api-version=1.6").subscribe(res => { 
    console.log(res); 
    }); 
+0

については

? – hlfrmn

+0

私はそうだと思っていますが、まだそれに取り組んでいますが、スイッチマップは私の必要と思われるものです。 – user1552172

答えて

1
class MyClass { 

    firstMethod(headers: object): Observable<object> { 
     return Observable.of({qwerty: 123456}); 
    } 

    secondMethod(something: object): Observable<string> { 
     return Observable.of('OK'); 
    } 

    runner(): void { 
     const obj = {a:1}; 
     this 
      .firstMethod(obj) // object -> Observable 
      .switchMap(  // Observable -> object 
       (returnedObject: object) => this.secondMethod(returnedObject) // object -> Observable 
      ).subscribe((x: string) => console.log(x)) // logs 'OK' 
    } 
} 

SwitchMap第二の一つによって受信することができる値に観察可能な最初の "変換"。 `switchMap`探してより正確なドキュメントのチェックherehere

+0

私はそれを正常に購読すれば動作する最初のメソッドから未定義を取得しています。 リターンObservable.of(ヘッダー);これはswitchmapが起こるはずですが、私は取得できませんundefinedのswitchMapプロパティを読み取ることができません – user1552172

+0

@ user1552172 'runfirstmethod'このメソッドのシグネチャは何ですか? – hlfrmn

+0

サービスとコンポーネント全体を更新しました。私はマップを起動してスイッチマップに戻ることができません。 – user1552172

関連する問題