2016-01-31 10 views
6

Burada Angular2 için öğretici talimatları ile birlikte takip ediyorum: https://angular.io/docs/ts/latest/tutorial/toh-pt4.htmlAngular2'de, hizmet değerleri nasıl döndürülüyor?

Bir noktada, bu bileşene geri hizmetin vaadi bilgileri döndürmek için notlar aşağıdaki sözdizimi gereklidir:

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

Angular2 ve TypeScript için yeni olmama rağmen tam olarak burada neler olduğunu anlamaya çalışıyorum. Belgelerin yazarı:

Geri bildirmemiz, bileşenin kahramanlarını, hizmet tarafından döndürülen kahraman dizisine ayarlar.

Parantez içinde ve özellikle son "kahramanların" nereden geldiği konusunda kafam karıştı. Hizmet, söyleyebildiğim kadarıyla "kahramanları" iade etmiyor. Bunun yerine, Heroes arabirimini kullanan ve HEROES dizisini döndüren mock-hero'lardan HEROES'u içe aktarır ve döndürür. Bunların hiçbirinde "kahramanlar" (küçük harf) görmüyorum.

"Kahramanlar" anında yaratılıyor mu? Birisi biraz daha ayrıntılı bir şekilde açıklayabilir:

heroes => this.heroes = heroes 

mu? Çok teşekkürler. Sonra biraz bu çizgiyi teşrih Sağlar

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

:

cevap

12

akılda tutulması gereken ilk şey bir kahramanların listesini dönen, yöntem heroService.getHeroes() kahramanlar dönmez, ancak bir söz olduğunu eninde sonunda çözecektir olmasıdır kod:

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

Bu aynı zamanda şu şekilde yazılmış olabilirdi:

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

Bu, bir söz döndüren _heroService.getHeroes() yöntemini çağırın. Söz konusu karar çözüldüğünde, then'un içindeki geri arama, sözün sonucuyla çağrılır.

Bu işlem gerçekleştiğinde, söz vermenin çıktısını alan (heroesPromise) geri arama çağrılır ve onu this.heroes üye değişkenine atar.

+0

Ah, eğer doğru bir şekilde anlıyorsam, "kahramanları" çıktı değişkeni olarak değiştirebilir ve ona ne diyebiliriz? : 'this._heroService.getHeroes(). Sonra (xxx => this.heroes = xxx)' veya daha da ayrıntılı: 'this._heroService.getHeroes(). Sonra (promiseReturnValue => this.heroes = promiseReturnValue)' – daprezjer

+0

evet thats doğru, xxx sözünü iade değeridir, değişken olarak verebileceğiniz herhangi bir isim verebilirsiniz –

+0

Yardımlarınız için teşekkür ederiz! – daprezjer

İlgili konular