![](/img/trans.png)
[英]Why does async and await not returned a resolved promise outside of the function?
[英]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.