gpt4 book ai didi

angular - 在 Angular 2 中使用 Observables 进行错误处理

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

我正在尝试将 HTTP 请求中可能发生的任何错误从我的所有服务传递到公共(public)日志记录服务:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';

constructor(logger: LoggerService) { }

doSomething(): Observable<any> {
return this.http
.post('/foo/bar', {})
.catch(this.notifyErrors);
}

protected notifyErrors(error: any): Observable<any> {
this.logger.log(error);

return Observable.throw(error);
}

不幸的是,在notifyErrors 方法中,this 丢失了。我试过将其定义为粗箭头,但我从 TS 编译器中得到了类型错误。我在 Observable 文档中使用了准确的语法。

最佳答案

如果传递函数引用,则需要修复this

 .catch(this.notifyErrors.bind(this));

或者替代地

 .catch(() => this.notifyErrors());

另见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

关于angular - 在 Angular 2 中使用 Observables 进行错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43099252/

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