Angular 7:返回http响应和相同调用的结果?
我在angular web应用程序中实现了这个调试菜单,以便使用JsonEditor将请求发送到后端。到目前为止,我只需要返回http响应来显示响应代码,看看请求是否成功。然而,现在我有了另一个用例,在这个用例中,我必须发送一个请求,并且不仅返回http响应代码,还返回请求的实际结果。这些请求将影响实际数据,因此我不能发送两次相同的请求。是否可以同时返回http响应和结果Angular 7:返回http响应和相同调用的结果?,angular,typescript,rxjs,httprequest,httpresponse,Angular,Typescript,Rxjs,Httprequest,Httpresponse,我在angular web应用程序中实现了这个调试菜单,以便使用JsonEditor将请求发送到后端。到目前为止,我只需要返回http响应来显示响应代码,看看请求是否成功。然而,现在我有了另一个用例,在这个用例中,我必须发送一个请求,并且不仅返回http响应代码,还返回请求的实际结果。这些请求将影响实际数据,因此我不能发送两次相同的请求。是否可以同时返回http响应和结果 getObject(data: any): Observable<any> { let httpOp
getObject(data: any): Observable<any> {
let httpOptions = this.kecloakService.buildHeaderWithToken();
let httpParams = new HttpParams().set("data", data);
httpOptions = _.extend(httpOptions, httpParams);
httpOptions = _.extend(httpOptions, { observe: 'response' });
let resultSubject = new AsyncSubject<any>();
this.configurationService.loadNetworkConfiguration(false).subscribe((config: NetworkConfiguration) => {
if (config) {
let resultObservable = this.http.get(config.backendHostUrl + "ObjectData/", httpOptions);
//Http response
//resultObservable.subscribe((response: Response) => {
//Result
resultObservable.subscribe((result: any) => {
resultSubject.next(result);
resultSubject.complete();
}, error => {
resultSubject.next(error);
resultSubject.complete();
});
}
});
return resultSubject;
}
这是一个反模式订阅,位于订阅中,这是代码中发生的事情
为什么不使用像map和switchMap这样的RxJS操作符呢
在这里,尝试一下:
getObject(data: any): Observable < any > {
let httpOptions = this.kecloakService.buildHeaderWithToken();
let httpParams = new HttpParams().set("data", data);
httpOptions = _.extend(httpOptions, httpParams);
httpOptions = _.extend(httpOptions, {
observe: 'response'
});
return this.configurationService.loadNetworkConfiguration(false)
.pipe(
map((config: NetworkConfiguration) => {
if (config) {
return this.http.get(config.backendHostUrl + "ObjectData/", httpOptions);
} else {
return of({ error: 'Something went wrong!' });
}
})
);
}
我还没有测试过这个,但我看不出为什么它不工作
请尝试一下,如果没有,请告诉我:
希望这能有所帮助。这是一个反模式订阅,它位于订阅中,这就是代码中发生的情况
为什么不使用像map和switchMap这样的RxJS操作符呢
在这里,尝试一下:
getObject(data: any): Observable < any > {
let httpOptions = this.kecloakService.buildHeaderWithToken();
let httpParams = new HttpParams().set("data", data);
httpOptions = _.extend(httpOptions, httpParams);
httpOptions = _.extend(httpOptions, {
observe: 'response'
});
return this.configurationService.loadNetworkConfiguration(false)
.pipe(
map((config: NetworkConfiguration) => {
if (config) {
return this.http.get(config.backendHostUrl + "ObjectData/", httpOptions);
} else {
return of({ error: 'Something went wrong!' });
}
})
);
}
我还没有测试过这个,但我看不出为什么它不工作
请尝试一下,如果没有,请告诉我:
希望这有帮助。这能回答您的问题吗?这回答了你的问题吗?