关于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
相关产品推荐
相关产品推荐

