gpt4 book ai didi

angular - 如何处理可观察到的错误但继续关注可观察到的错误?

转载 作者:太空狗 更新时间:2023-10-29 17:33:01 24 4
gpt4 key购买 nike

我有一个 observable,http 是否在处理其他 observable 的过程中。在 http get 响应代码不是 200 的情况下,我想记下这个错误,但继续下一个可观察的。

到目前为止我有这个:

this.getConfigurationSettings()
.do(config => {
console.log('configuration settings.: ', config);
this.configSettings = config;
this.subscriptionService.setWSAddressProvider('badUrl');
})
.switchMap(config => this.askForWSData())
.do(config =>
console.log('askForWSData' + config))
.switchMap(r => this.processWSData())
.subscribe(
config => {
console.log('start of data processing: ' + config);
},
err => {
// Log errors if any
console.log(err);
},
() => console.log('app exiting'));

并且可以返回 http 错误代码的可观察对象如下:

setWSAddressProvider() : Observable<string[]> {
return this.http.get('badUrl')
.map((res:Response) => {
this.address = res.text();
return [res.text()];
});
// .catch((error:any) =>
// Observable.throw('Server error')
// );
}

上述情况生成 400 响应代码。我想记录该返回值,但继续处理其他可观察值。如何做到这一点?

最佳答案

您可以使用catch 来处理http errors

setWSAddressProvider() : Observable<string[]> {
return this.http.get('badUrl')
.map((res:Response) => {
this.address = res.text();
return [res.text()];
});
.catch((error: Response | any) => {
if (error instanceof Response) {
if (error.status === 400) {
console.log("Server responded with 400");
// Create a new observable with the data for the rest of the chain
return Observable.of([]);
}
}
// Re-throw unhandled error
return Observable.throw(err);
});

关于angular - 如何处理可观察到的错误但继续关注可观察到的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43455062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com