2016-01-31 11 views
6

私はここにAngular2ためのチュートリアルの指示と一緒に次のようだ: https://angular.io/docs/ts/latest/tutorial/toh-pt4.htmlAngular2では、サービス値はどのように返されますか?

ある時点で、それが戻っコンポーネントへのサービスの約束情報を返すようにすることを指摘し、次の構文が必要です。

getHeroes() { 
    this._heroService.getHeroes().then(heroes => this.heroes = heroes); 
} 

ここで何が起こっているのかを正確に理解しようとしていますが、私はAngular2とTypeScriptが初めてです。ドキュメントは言う:

私たちのコールバックは、サービスによって返さ 英雄の配列に、コンポーネントの英雄のプロパティを設定します。

括弧内には何が起こっているのか、具体的には最終的な「英雄」がどこから来ているのか混乱しています。サービスは、私が知る限り、「英雄」を返さない。その代わりに、モックヒーローからHEROESをインポートして返します。モックヒーロー自体はHeroesインターフェイスを使用し、HEROES配列を返します。私はこの中で「英雄」(小文字)は見ません。

「ヒーローズ」はオンザフライで作成されていますか?誰かが少しずつ詳細を説明できるのですか?

heroes => this.heroes = heroes 

はありますか?本当にありがとう。

答えて

12

心に留め最初にすべきことは、英雄を返さないheroService.getHeroes()方法が、最終的に解決されます約束、英雄のリストを返すということです。

getHeroes() { 
    return Promise.resolve(HEROES); 
} 

は、ビットにこのラインを分析できますコード:

this._heroService.getHeroes().then(heroes => this.heroes = heroes); 

これはまた、次のように書かれている可能性:

this._heroService.getHeroes().then(function(heroesFromPromise) { 
    this.heroes = heroesFromPromise; 
}); 

これは、約束を返す_heroService.getHeroes()メソッドを呼び出すことを意味します。約束が解決されると、then内のコールバックが呼び出され、約束の結果が返されます。

これが実行されると、約束(heroesPromise)の出力を受け取り、それをthis.heroesメンバ変数に割り当てるコールバックが呼び出されます。

+0

ああ、私はあなたを正しく理解しているならば、 "英雄"を出力変数に置き換えて、それを何とか呼ぶことができますか? : 'this._heroService.getHeroes()。then(xxx => this.heroes = xxx)'またはもっと冗長に 'this._heroService.getHeroes()。then(promiseReturnValue => this.heroes = promiseReturnValue)' – daprezjer

+0

はい、それは正しいです、xxxは約束の戻り値です。あなたが言及したように変数に任意の名前を付けることができます –

+0

ありがとうございました! – daprezjer

関連する問題