为什么异步函数 return 'zone object'
Why async function return 'zone object'
这个问题和有点关系。这里我们在 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;
...
}
在调试器 chrome 调试器中,当我查看 newFloorData
时,我得到以下信息:
ZoneAwarePromise
__zone_symbol__state : true
__zone_symbol__value : {percent: 0, requestSubscription: null, finish: false, deleted: false}
proto : Object
但是,如果我在 addFloor
函数中添加 await
:
public async addFloor(event)
{
let newFloorData = await this.createFloor('test name');
debugger;
...
}
在调试器中,我只得到 createFloor
返回的 newFloorData 对象(这很直观)。
问题:为什么?这种行为背后的机制是什么?
Angular 使用 zone.js 修补几乎所有异步 API。
它这样做是为了在发生异步操作时收到通知,然后触发更改检测 运行.
另见
这个问题和
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;
...
}
在调试器 chrome 调试器中,当我查看 newFloorData
时,我得到以下信息:
ZoneAwarePromise
__zone_symbol__state : true
__zone_symbol__value : {percent: 0, requestSubscription: null, finish: false, deleted: false}
proto : Object
但是,如果我在 addFloor
函数中添加 await
:
public async addFloor(event)
{
let newFloorData = await this.createFloor('test name');
debugger;
...
}
在调试器中,我只得到 createFloor
返回的 newFloorData 对象(这很直观)。
问题:为什么?这种行为背后的机制是什么?
Angular 使用 zone.js 修补几乎所有异步 API。 它这样做是为了在发生异步操作时收到通知,然后触发更改检测 运行.
另见