我正在阅读 Angular 在https://angular.io/tutorial/toh-pt6的教程,我有几个问题。我的第二个问题与这里提出的关于同一个 Angular 演示的问题非常接近,但尽管它几乎涉及到我的特定语法问题,但它只是简短,并且一个响应没有涉及到它。
从调用返回的 Observable 中检索服务中的数据HttpClient.get
,它们catchError
在管道中有一个运算符:
/** GET heroes from the server */
getHeroes(): Observable<Hero[]> {
return this.http.get<Hero[]>(this.heroesUrl)
.pipe(
tap(_ => this.log('fetched heroes')),
catchError(this.handleError<Hero[]>('getHeroes', []))
);
}
这点我明白了。我希望this.handleError
返回一个处理程序,一个错误到处理错误的代码的映射。在他们已经提供的页面上再往上一点:
private handleError<T>(operation = 'operation', result?: T) {
return (error: any): Observable<T> => {
// TODO: send the error to remote logging infrastructure
console.error(error); // log to console instead
// TODO: better job of transforming error for user consumption
this.log(`${operation} failed: ${error.message}`);
// Let the app keep running by returning an empty result.
return of(result as T);
};
}
首先,我注意到虽然这些示例的类型很多,但这个示例似乎没有输入返回值。我期待
private handleError<T>(operation = 'operation', result?: T) **: some type** {
其次,我认为函数返回的是 lambda 表达式映射Observable<T>
到大括号之间的大块代码(它本身最终返回result
,我们希望在发生错误时返回给订阅者的安全默认值,以便它可以继续处理,用 ) 包裹在 Observable 中of
。但我不明白 lambda 表达式之前第二行的语法:
return (error: any): Observable<T> => {
什么是return (error: any):
,位于函数定义内部handleError
,它与它后面的内容有什么关系?第二个冒号的句法意义是什么?它代表了它两边的表达式之间的什么关系?