You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于ECMAScript规范中await表达式执行上下文的疑问

关于ECMAScript异步函数await机制的疑问

我为理解JavaScript引擎异步函数的内部机制,查阅了ECMAScript 13规范。规范6.2.3.1节指出:

await会创建一个解析为被等待表达式的Promise,并通过.then添加处理程序;其中fulfillment handler是一个捕获asyncContext(异步函数关联的执行上下文)的抽象闭包,该闭包会挂起当前运行的执行上下文并恢复asyncContext为运行上下文。

我的疑惑点:

  • 当这个抽象闭包被调用时,其自身关联的执行上下文是否会成为运行上下文?这样的话该闭包会不会挂起自身?
  • 我认为会出现这种情况的推导:.then通过PerformPromiseThen创建作业,作业由NewPromiseReactionJob生成,会创建使用HostCallJobCallback调用handler的抽象闭包,这会触发对函数对象[[Call]]内部方法的调用,从而将新执行上下文推入栈中。

请问我哪里理解有误?6.2.3.1节中的prevContext具体指什么?


内容的提问来源于stack exchange,提问作者Stefan Octavian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:33:26