Какова правильная интерпретация этой функции стрелки, подписывающейся в Angular? - PullRequest
0 голосов
/ 14 ноября 2018

Я следую официальному учебнику по Angular: https://angular.io/tutorial/toh-pt4

Как вы можете видеть, есть один класс компонентов, подписывающихся на службу:

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);
  }

Я знаю, что мой сервис возвращает Observable<Hero[]>, на который я должен подписаться, потому что он асинхронный.

Единственное, что я могуЯ не полностью понимаю, это внутреннее выражение (я думаю, что оно называется лямбда), это: heroes => this.heroes = heroes

Каков точный смысл этого выражения?

1 Ответ

0 голосов
/ 14 ноября 2018

Вы правы, это действительно лямбда, однако они чаще упоминаются в js как функции стрелок. Они функционируют одинаково.

Это лямбда равно:

(function (heroes) { return _this.heroes = heroes; });

Итак, он ожидает параметр и затем сохраняет его в локальном свойстве.

Наблюдаемое в вашем фрагменте также может быть записано:

this.heroService.getHeroes()
   .subscribe((heroes: Hero[]) => {
      this.heroes = heroes;
   });

Что является более понятным из того, что он возвращает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...