繁体   English   中英

为什么'await'触发'.then()'在'async'函数返回的代理上?

[英]Why does 'await' trigger '.then()' on a Proxy returned by an 'async' function ?

我正在使用babel(env)编译代码,编译为ES5。

这是代码:

 (async () => { const p = async () => { return new Proxy({}, { get: (target, property) => { console.log(property); } }) }; const r = await p();// await calls .then on the result of p() })(); 

它实际上发生了两次。

为什么在async function返回的代理上触发.then()

async function调用的结果是使用函数体评估的return解析的promise。 解决一个promise会检查分辨率值是否是一个可以解决的值(“类似承诺的值”),这将导致等待内部结果的承诺。 (在您的情况下,访问.then在代理上不会返回一个函数,因此它不被认为是一个可用的,并且代理履行了承诺)。

为什么await在代理上触发.then()

同样在这里。 await不仅适用于promises,它适用于任意值。 为了确定他们的“承诺 - 价值”,它运行完全相同的可检查 - 它解决了一个等待价值的承诺,然后等待承诺解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM