angular2 将来自 http 请求的结果传递给 mergemap http 请求
angular2 pass result from http request into mergemap http request
我正在尝试获取一种方法的结果,该方法returns 将一个可观察对象传递给第二个请求
this.runfirstmethod(headers).mergeMap(response => this.http[verb](url, response).map(res => res.json()))
这就是我正在做的一切,我想我做错了什么,因为我无法从 buildAzureHeaders 中获取 headers。
服务
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);
});
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 "converts" 第一个可观察到第二个可以接收的值。
我正在尝试获取一种方法的结果,该方法returns 将一个可观察对象传递给第二个请求
this.runfirstmethod(headers).mergeMap(response => this.http[verb](url, response).map(res => res.json()))
这就是我正在做的一切,我想我做错了什么,因为我无法从 buildAzureHeaders 中获取 headers。
服务
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);
});
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 "converts" 第一个可观察到第二个可以接收的值。