Angular2 =>操作者

时间:2016-11-09 14:26:49

标签: angular

我正在阅读名为“英雄之旅”的教程,我有一个不清楚的部分。

我正在接受这项服务:

import { Injectable } from '@angular/core';

import { Hero } from './hero';
import { HEROES } from './mock-heroes';

@Injectable()
export class HeroService {
    getHeroes(): Promise<Hero[]> {
        return Promise.resolve(HEROES);
    }

    getHeroesSlowly(): Promise<Hero[]> {
      return new Promise<Hero[]>(resolve =>
        setTimeout(resolve, 2000)) // delay 2 seconds
        .then(() => this.getHeroes());
    }

    getHero(id: number): Promise<Hero> {
      return this.getHeroes()
                 .then(heroes => heroes.find(hero => hero.id === id));
    }

}

下一个模拟:

import { Hero } from './hero';

export const HEROES: Hero[] = [
  { id: 11, name: 'Mr. Nice' },
  { id: 12, name: 'Narco' },
  { id: 13, name: 'Bombasto' },
  { id: 14, name: 'Celeritas' },
  { id: 15, name: 'Magneta' },
  { id: 16, name: 'RubberMan' },
  { id: 17, name: 'Dynama' },
  { id: 18, name: 'Dr IQ' },
  { id: 19, name: 'Magma' },
  { id: 20, name: 'Tornado' }
];

一切运行良好,但有一部分对我来说有点不清楚,如果有人能澄清我会很好。

我正在谈论的部分是:

return this.getHeroes()
                 .then(heroes => heroes.find(hero => hero.id === id));

来自服务。

我知道第一个叫做getHeroes()方法,它从模拟中返回列表,但之后会发生什么? :)

长话短说,与heroes => heroes.find(hero => hero.id === id)

有什么关系

感谢您的快速评论!

现在我明白了与'=&gt;'的交易是什么但我仍然没有得到的是英雄对象出现在哪里 heroes => heroes.find(hero => hero.id === id)

1 个答案:

答案 0 :(得分:1)

return this.getHeroes()
    .then(function(heroes){
          heroes.find(function(hero){
                      hero.id === id}
     ));

需要英雄= HEROES,应用.find()方法。

find()方法返回数组中第一个满足提供的测试函数的元素的值。否则返回undefined。

您可以使用:

return this.getHeroes()
        .then(function(heroes){
              heroes.find(function(doesNotMatter){
                          doesNotMatter.id === id}
         ));

仍然得到与第一个相同的结果。

让我们说getHero(id:number)的id是12

第一次运行

doesNotMatter = { id: 11, name: 'Mr. Nice' }; 
doesNotMatter.id = 11

不满足下一个.find()

第二轮

doesNotMatter = { id: 12, name: 'Narco' }; 
doesNotMatter.id = 12

它满足.find()它会停止并返回值。

检查https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find