在角度教程中我有这个
private heroesUrl = 'api/heroes'; // URL to web api
constructor(private http: Http) { }
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json().data as Hero[])
.catch(this.handleError);
}
private handleError(error: any): Promise<any> {
console.error('An error occurred', error); // for demo purposes only
return Promise.reject(error.message || error);
}
我的问题是.catch(this.handleError)
如何运作?
为什么我可以在没有传递参数的情况下执行this.handleError
?
答案 0 :(得分:2)
您将函数作为变量传递给另一个函数。然后,第一个函数最终调用您传递的函数。这被称为回调&#39;。查看本教程http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/
基本上就是这样的。
var func1 = function( callback ) {
callback("hello");
}
var func2 = function( text ) {
console.log(text); // hello
}
func1( func2 );
答案 1 :(得分:0)
Typescript编译将为您处理。 等效代码将显示为
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json().data as Hero[])
.catch(funtion(error) {
console.error('An error occurred', error);
return Promise.reject(error.message || error);
}
注意:为了理解我单独编译catch
部分而不是完整功能。
但是,如果您想明确指示参数,可以使用如下,
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json().data as Hero[])
.catch((response)=> {
this.handleError(response);
});
}