我在这里跟随Angular2的教程说明: https://angular.io/docs/ts/latest/tutorial/toh-pt4.html
有一点,它指出要将服务的承诺信息返回给组件,需要以下语法:
getHeroes() {
this._heroService.getHeroes().then(heroes => this.heroes = heroes);
}
我试图准确理解这里发生了什么,尽管我是Angular2和TypeScript的新手。文档说:
我们的回调将组件的英雄属性设置为数组 服务归来的英雄们。
我对括号中的内容感到困惑,特别是最后的英雄"是来自。据我所知,这项服务并没有回归英雄。"相反,它从mock-heroes导入并返回HEROES,后者本身使用Heroes接口并返回HEROES数组。我没有看到"英雄" (小写)中的任何一个。
是"英雄"在飞行中创建?有人可以更详细地解释每个部分:
heroes => this.heroes = heroes
呢?非常感谢。
答案 0 :(得分:14)
要记住的第一件事是方法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()
方法,该方法返回一个promise。当promise解析时,将使用promise的结果调用then
内的回调。
当发生这种情况时,执行调用回调,该回调接受promise(heroesPromise
)的输出,并将其分配给this.heroes
成员变量。