为什么异步函数返回'区域对象'

时间:2018-02-13 15:03:20

标签: angular typescript async-await zone

这个问题与this one有点关系。这里我们在ANGULAR中有以下代码:

private async createFloor(name) 
{
    let newFloorData = { 
        floorName: name,
        percent: 0,
        requestSubscription: null,
        finish: false,
        deleted: false,
    };

    ...

    return newFloorData;
}

public async addFloor(event) 
{
     let newFloorData = this.createFloor('test name');
     debugger;
     ...
}

当我查看newFloorData时,在调试器chrome调试器中,我得到以下信息:

  

ZoneAwarePromise

     

__ zone_symbol__state:true

     

__ zone_symbol__value:{percent:0,requestSubscription:null,finish:false,deleted:false}

     

proto :对象

但是,如果我在await函数中添加addFloor

public async addFloor(event) 
{
     let newFloorData = await this.createFloor('test name');
     debugger;
     ...
}

在调试器中我只获得createFloor返回的newFloorData对象(直观)。

问题:为什么?这种行为背后有什么机制?

1 个答案:

答案 0 :(得分:2)

Angular使用zone.js来修补几乎所有异步API。 这样做是为了在异步操作发生时得到通知,然后触发更改检测运行。

另见