Angular2中的Promise和Arrow函数

时间:2017-03-31 16:44:18

标签: angular promise angular-promise

我是角色的新手,听起来可能很傻但是我没有得到这段代码的工作原理




  this.ms.getList()。然后((hl)=> {this.HeroesList = hl;});
  




我调用了服务方法,成功的是什么呢回来了?





其次,这个箭头函数如何获得我的服务必须返回的英雄数组,然后将数组分配给我的组件变量,


 


我的组件代码:




 构造函数(私有ms:myService){
 }
 ngOnInit(){
 this.ms.getList()。then((hl)=> {this.HeroesList = hl;});
 }
  




以下是服务:




  import {注入来自'@ angular / core'
导入{Hero}来自'./hero'
import {HeroesList}来自'./heroesList'
@Injectable()
export class myService {
英雄:英雄[];
 getList():Promise< Hero []> {
返回Promise.resolve(HeroesList); //成功时,返回列表
 }

}
  



2 个答案:

答案 0 :(得分:3)

如果你看一下如何将TypeScript转换为JavaScript(ES5),可能会更容易理解。

你的TypeScript:

this.ms.getList().then((hl) => { this.HeroesList = hl; });

透明化为JavaScript:

this.ms.getList().then(function(hl) { 
    this.HeroesList = hl; 
});

Promise .then()函数接受两个回调函数,一个用于成功回调,另一个用于错误回调。您只使用成功回调。因此,当您的Promise上执行.then()时,如果您的Promise成功,它将回调您定义的成功函数。然后,您定义的成功函数会将服务变量设置为Promise的已解析结果。

答案 1 :(得分:1)

当promise解析时......它返回的是heroeslist,它是组件中的h1然后运行。