2016-11-09 17 views
1

私は現在「Tour of heroes」という名前のチュートリアルを読んでいますが、私は不明な部分があります。Angular2 =>演算子

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)

との契約は、あなたの迅速なコメントありがとうございます!

は今、私は「=>」との契約が何であるかを理解したが、私はまだ取得しないことヒーローオブジェクトが heroes => heroes.find(hero => hero.id === id)

+1

がhttps://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promiseとhttps://developer.mozilla.org/en/docs/Web/を参照してください。 JavaScript/Reference/Functions/Arrow_functions –

+0

私は何とかJava8に似ていますが、findメソッドが宣言されている場所と主人公オブジェクトが出現した場所を理解していますか? – Aditzu

+0

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find – yurzui

答えて

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:番号)idは最初の実行で12

ある

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

2日に

次.find()を満たしていませんrun

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

これは、.find()を満たすndは値を返します。

チェックhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find

+0

非常に便利です!ありがとうございました!私はfindメソッドがリストを解析し、ヒーローが現在の要素だと思っていたが、わからなかった。 Multumescマルチインカデータ:) – Aditzu