这个箭头函数在 Angular 中订阅 Observable 的正确解释是什么?
What is the correct interpretation of this arrow function subscribing an Observable in Angular?
我正在学习官方 Angular 教程:https://angular.io/tutorial/toh-pt4
如您所见,有一个组件 class 订阅了一项服务:
import { Component, OnInit } from '@angular/core';
import { Hero } from '../hero';
import { HeroService } from '../hero.service';
@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
selectedHero: Hero;
heroes: Hero[];
constructor(private heroService: HeroService) { }
ngOnInit() {
this.getHeroes();
}
onSelect(hero: Hero): void {
this.selectedHero = hero;
}
getHeroes(): void {
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
}
}
我对这个组件的getHeroes()
方法有些疑惑:
getHeroes(): void {
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
}
我知道我的服务 returns 是我必须订阅的 Observable<Hero[]>
,因为它是异步的。
我唯一不能完全理解的是内部表达式(我认为它叫做lambda),这个:
heroes => this.heroes = heroes
这个表达式的确切含义是什么?
你是对的,它确实是一个 lambda,但是它们在 js 中更常被称为箭头函数。它们的功能相同。
lambda 等于:
(function (heroes) { return _this.heroes = heroes; });
所以它需要一个参数,然后将其存储在本地属性。
您代码段中的 Observable 也可以写成:
this.heroService.getHeroes()
.subscribe((heroes: Hero[]) => {
this.heroes = heroes;
});
返回的内容更清楚。
我正在学习官方 Angular 教程:https://angular.io/tutorial/toh-pt4
如您所见,有一个组件 class 订阅了一项服务:
import { Component, OnInit } from '@angular/core';
import { Hero } from '../hero';
import { HeroService } from '../hero.service';
@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
selectedHero: Hero;
heroes: Hero[];
constructor(private heroService: HeroService) { }
ngOnInit() {
this.getHeroes();
}
onSelect(hero: Hero): void {
this.selectedHero = hero;
}
getHeroes(): void {
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
}
}
我对这个组件的getHeroes()
方法有些疑惑:
getHeroes(): void {
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
}
我知道我的服务 returns 是我必须订阅的 Observable<Hero[]>
,因为它是异步的。
我唯一不能完全理解的是内部表达式(我认为它叫做lambda),这个:
heroes => this.heroes = heroes
这个表达式的确切含义是什么?
你是对的,它确实是一个 lambda,但是它们在 js 中更常被称为箭头函数。它们的功能相同。
lambda 等于:
(function (heroes) { return _this.heroes = heroes; });
所以它需要一个参数,然后将其存储在本地属性。
您代码段中的 Observable 也可以写成:
this.heroService.getHeroes()
.subscribe((heroes: Hero[]) => {
this.heroes = heroes;
});
返回的内容更清楚。