?um/p1-90`接口是一组
iterable 接口
| 属性 | 值 | 要求 |
|---|---|---|
%Symbol.iterator%
|
返回 |
返回的对象必须符合 |
实现 iterator 接口的对象必须
| 属性 | 值 | 要求 |
|---|---|---|
|
|
返回 IteratorResult 对象的函数 |
返回的对象必须符合 next 方法的调用已返回一个 next 方法的所有调用也应返回一个 |
可以向 next 函数传递实参,但其解释和有效性取决于目标 iterator。for-of 语句和其他 iterator 的常见使用者不会传递任何实参,因此预期以这种方式使用的 iterator 对象必须准备好处理无实参调用的情况。
| 属性 | 值 | 要求 |
|---|---|---|
|
|
返回 IteratorResult 对象的函数 |
返回的对象必须符合 next 方法调用。返回的 IteratorResult 对象通常会有一个值为 return 方法的实参。不过,此要求不会被强制执行。
|
|
|
返回 IteratorResult 对象的函数 |
返回的对象必须符合 throw 作为实参传入的值。如果该方法没有 throw,则返回的 IteratorResult 对象通常会有一个值为 |
通常,这些方法的调用者应在调用前检查其是否存在。某些 ECMAScript 语言特性,包括 for-of、yield* 和数组解构,会在执行存在性检查后调用这些方法。大多数接受
async iterable 接口
| 属性 | 值 | 要求 |
|---|---|---|
%Symbol.asyncIterator% |
返回 |
返回的对象必须符合 |
实现 async iterator 接口的对象必须
| 属性 | 值 | 要求 |
|---|---|---|
| 返回 IteratorResult 对象 promise 的函数 |
返回的 promise 在被兑现时,必须以符合 此外,作为兑现值的 IteratorResult 对象应具有一个 |
可以向 next 函数传递实参,但其解释和有效性取决于目标 async iterator。for-await-of 语句和其他 async iterator 的常见使用者不会传递任何实参,因此预期以这种方式使用的 async iterator 对象必须准备好处理无实参调用的情况。
| 属性 | 值 | 要求 |
|---|---|---|
| 返回 IteratorResult 对象 promise 的函数 |
返回的 promise 在被兑现时,必须以符合 此外,作为兑现值的 IteratorResult 对象应具有一个 |
|
| 返回 IteratorResult 对象 promise 的函数 |
返回的 promise 在被兑现时,必须以符合 如果返回的 promise 被兑现,则 IteratorResult 对象兑现值通常会有一个值为 |
通常,这些方法的调用者应在调用前检查其是否存在。某些 ECMAScript 语言特性,包括 for-await-of 和 yield*,会在执行存在性检查后调用这些方法。
IteratorResult 接口
| 属性 | 值 | 要求 |
|---|---|---|
|
|
Boolean |
这是 next 方法调用的结果状态。如果已到达 |
|
|
|
如果 done 是 |
Iterator Helper 对象是一种
%IteratorHelperPrototype% 对象:
此属性具有特性 { [[Writable]]:
Iterator 构造器:
此函数在被调用时执行以下步骤:
%WrapForValidIteratorPrototype% 对象:
Iterator.prototype 的初始值是
此属性具有特性 { [[Writable]]:
此函数在被调用时执行以下步骤:
此函数在被调用时执行以下步骤:
Iterator 原型对象:
本规范中定义的所有实现
以下表达式是 ECMAScript 代码访问 %Iterator.prototype% 对象的一种方式:
Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))
Iterator.prototype.constructor 是
[[Get]] 特性的值是一个不需要实参的内置函数。它在被调用时执行以下步骤:
[[Set]] 特性的值是一个接受实参 v 的内置函数。它在被调用时执行以下步骤:
不同于大多数内置原型上的
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
调用此方法时,它执行以下步骤:
此方法的
此函数在被调用时执行以下步骤:
此函数的
Iterator.prototype[%Symbol.toStringTag%] 是
[[Get]] 特性的值是一个不需要实参的内置函数。它在被调用时执行以下步骤:
[[Set]] 特性的值是一个接受实参 v 的内置函数。它在被调用时执行以下步骤:
不同于大多数内置原型上的
The abstract operation IteratorZip takes arguments iters (a
%AsyncIteratorPrototype% 对象:
本规范中定义的所有实现
调用此方法时,它执行以下步骤:
此方法的
此函数在被调用时执行以下步骤:
此函数的
Async-from-Sync Iterator 对象是一种
The abstract operation CreateAsyncFromSyncIterator takes argument syncIteratorRecord (an
%AsyncFromSyncIteratorPrototype% 对象:
throw 方法,则关闭它,使其在我们拒绝 capability 之前有机会进行清理。throw 方法。Async-from-Sync
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[SyncIteratorRecord]] |
|
表示正在被适配的原始同步 |
The abstract operation AsyncFromSyncIteratorContinuation takes arguments result (an Object), promiseCapability (a
Disposable 接口
| 属性 | 值 | 要求 |
|---|---|---|
%Symbol.dispose%
|
一个 |
调用此方法会通知 对同一个对象多次调用此方法时,应避免对已经处置的资源重复执行清理逻辑,并且不应抛出异常,即使第一次调用时曾抛出异常也是如此。不过,此要求不会被强制执行。 当通过 |
AsyncDisposable 接口
| 属性 | 值 | 要求 |
|---|---|---|
%Symbol.asyncDispose%
|
一个返回 promise 的 |
调用此方法会通知 对同一个对象多次调用此方法时,应避免对已经处置的资源重复执行清理逻辑,并且不应抛出异常或返回被拒绝的 promise,即使第一次调用时曾抛出异常或返回被拒绝的 promise 也是如此。不过,此要求不会被强制执行。 当通过 |
DisposableStack 是一个对象,可用于容纳一个或多个应一起处置的资源。
任何 DisposableStack 对象都处于两个互斥状态之一:已处置或待处理。当且仅当既未对可处置栈 d 调用 d.dispose(),也未对其调用 d.move() 时,d 是待处理的。
DisposableStack
extends 子句中的值。意图继承指定 DisposableStack 行为的子类super 调用,以创建并初始化带有必要内部状态的子类实例,从而支持 DisposableStack.prototype 的内置方法。调用此函数时,它执行以下步骤:
DisposableStack
DisposableStack.prototype 的初始值是
此属性具有特性 { [[Writable]]:
DisposableStack 原型对象:
调用此方法时,它执行以下步骤:
DisposableStack.prototype.constructor 的初始值是
调用此方法时,它执行以下步骤:
调用此方法时,它执行以下步骤:
DisposableStack.prototype.disposed 是一个
调用此方法时,它执行以下步骤:
调用此方法时,它执行以下步骤:
%Symbol.dispose% 属性的初始值是 %DisposableStack.prototype.dispose%,定义于
%Symbol.toStringTag% 属性的初始值是 String 值
此属性具有特性 { [[Writable]]:
DisposableStack 实例是
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[DisposableState]] |
|
支配可处置栈将如何响应对其 %Symbol.dispose% 方法的传入调用。
|
| [[DisposableResourceStack]] |
一个 |
在可处置栈被处置时要处置的资源。资源按其初始化顺序添加,并按相反顺序处置。 |
AsyncDisposableStack 是一个对象,可用于容纳一个或多个应一起异步处置的资源。
任何 AsyncDisposableStack 对象都处于两个互斥状态之一:已处置或待处理。当且仅当既未对异步可处置栈 d 调用 d.disposeAsync(),也未对其调用 d.move() 时,d 是待处理的。
AsyncDisposableStack
extends 子句中的值。意图继承指定 AsyncDisposableStack 行为的子类super 调用,以创建并初始化带有必要内部状态的子类实例,从而支持 AsyncDisposableStack.prototype 的内置方法。调用此函数时,它执行以下步骤:
AsyncDisposableStack
AsyncDisposableStack.prototype 的初始值是
此属性具有特性 { [[Writable]]:
AsyncDisposableStack 原型对象:
调用此方法时,它执行以下步骤:
AsyncDisposableStack.prototype.constructor 的初始值是
调用此方法时,它执行以下步骤:
调用此 async 方法时,它执行以下步骤:
AsyncDisposableStack.prototype.disposed 是一个
调用此方法时,它执行以下步骤:
调用此方法时,它执行以下步骤:
%Symbol.asyncDispose% 属性的初始值是 %AsyncDisposableStack.prototype.disposeAsync%,定义于
%Symbol.toStringTag% 属性的初始值是 String 值
此属性具有特性 { [[Writable]]:
AsyncDisposableStack 实例是
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[AsyncDisposableState]] |
|
支配可处置栈将如何响应对其 %Symbol.asyncDispose% 方法的传入调用。
|
| [[DisposableResourceStack]] |
一个 |
在可处置栈被处置时要处置的资源。资源按其初始化顺序添加,并按相反顺序处置。 |
Promise 是一种对象,用作延迟(并且可能是异步的)计算最终结果的占位符。
任何 Promise 都处于三种互斥状态之一:已兑现、已拒绝和待定:
p.then(f, r) 会立即入队一个 f,则 promise p 已兑现。
p.then(f, r) 会立即入队一个 r,则 promise p 已拒绝。
如果 promise 不是待定的,即如果它已兑现或已拒绝,则称该 promise 已敲定。
如果 promise 已敲定,或者它已被“锁定”为匹配另一个 promise 的状态,则该 promise 是已解决的。尝试解决或拒绝一个已解决的 promise 没有效果。如果 promise 不是已解决的,则它是未解决的。未解决的 promise 总是处于待定状态。已解决的 promise 可以是待定、已兑现或已拒绝。
PromiseCapability Record 是一种
PromiseCapability Record 具有
| 字段名 | 值 | 含义 |
|---|---|---|
| [[Promise]] | Object | 可用作 promise 的对象。 |
| [[Resolve]] | function object | 用于解决给定 promise 的函数。 |
| [[Reject]] | function object | 用于拒绝给定 promise 的函数。 |
IfAbruptRejectPromise 是一系列使用
与以下内容含义相同:
PromiseReaction Record 是一种
PromiseReaction Record 具有
| 字段名 | 值 | 含义 |
|---|---|---|
| [[Capability]] |
|
此 |
| [[Type]] |
|
当 [[Handler]] 是 |
| [[Handler]] |
|
应应用于传入值的函数,其返回值将支配派生 promise 会发生什么。如果 [[Handler]] 是 |
The abstract operation CreateResolvingFunctions takes argument toResolve (a Promise) and returns a
The abstract operation FulfillPromise takes arguments promise (a Promise) and value (an ECMAScript language value) and returns
The abstract operation NewPromiseCapability takes argument ctor (an ECMAScript language value) and returns either a normal completion containing a resolve 和 reject 函数。该 promise 加上 resolve 和 reject 函数用于初始化新的
此
The abstract operation IsPromise takes argument arg (an ECMAScript language value) and returns a Boolean. 它检查对象上的 promise 品牌。 It performs the following steps when called:
The abstract operation RejectPromise takes arguments promise (a Promise) and reason (an ECMAScript language value) and returns
The abstract operation TriggerPromiseReactions takes arguments reactions (a
The host-defined abstract operation HostPromiseRejectionTracker takes arguments promise (a Promise) and operation (
HostPromiseRejectionTracker 的默认实现是返回
HostPromiseRejectionTracker 在两种场景中被调用:
HostPromiseRejectionTracker 的典型实现可能会尝试向开发者通知未处理的拒绝,同时也会小心地在这类先前通知之后因附加新 handler 而失效时通知开发者。
如果 operation 是
The abstract operation NewPromiseReactionJob takes arguments reaction (a
The abstract operation NewPromiseResolveThenableJob takes arguments promiseToResolve (a Promise), thenable (an Object), and then (a
Promise 构造器:
extends 子句中的值。打算继承指定 Promise 行为的子类super 调用,以创建并初始化子类实例,使其具备支持 Promise 和 Promise.prototype 的内置方法所必需的内部状态。此函数在被调用时执行以下步骤:
executor 实参必须是 function object。它被调用以启动和报告此 Promise 所表示的可能延迟动作的完成情况。executor 以两个实参调用:resolve 和 reject。这些函数可由 executor 函数使用,以报告延迟计算的最终完成或失败。从 executor 函数返回并不表示延迟动作已完成,而只表示最终执行该延迟动作的请求已被接受。
传给 executor 函数的 resolve 函数接受单个实参。executor 代码最终可以调用 resolve 函数,以指示它希望解决关联的 Promise。传给 resolve 函数的实参表示延迟动作的最终值,可以是实际的兑现值,也可以是另一个 promise,如果该 promise 被兑现,则它将提供该值。
传给 executor 函数的 reject 函数接受单个实参。executor 代码最终可以调用 reject 函数,以指示关联的 Promise 被拒绝且永远不会被兑现。传给 reject 函数的实参用作该 promise 的拒绝值。通常它会是 Error 对象。
Promise 构造器传给 executor 函数的 resolve 和 reject 函数具有实际解决和拒绝关联 promise 的能力。子类可以有不同的构造器行为,传入自定义的 resolve 和 reject 值。
Promise 构造器:
此函数返回一个新的 promise,该 promise 以所传 promise 的兑现值数组兑现,或者以第一个被拒绝的所传 promise 的理由拒绝。它在运行此算法时会将所传
此函数要求其
The abstract operation GetPromiseResolve takes argument promiseCtor (a constructor) and returns either a normal completion containing a function object or a throw completion. It performs the following steps when called:
The abstract operation PerformPromiseAll takes arguments iteratorRecord (an
此函数返回一个 promise,该 promise 会以 promise 状态快照数组兑现,但只有在所有原始 promise 都已敲定,即变为已兑现或已拒绝之后才会兑现。它在运行此算法时会将所传
此函数要求其
The abstract operation PerformPromiseAllSettled takes arguments iteratorRecord (an
此函数返回一个 promise,该 promise 由第一个被兑现的给定 promise 兑现;或者如果所有给定 promise 都被拒绝,则以持有拒绝理由的 AggregateError 拒绝。它在运行此算法时会将所传
此函数要求其 Promise 构造器参数约定的
The abstract operation PerformPromiseAny takes arguments iteratorRecord (an
Promise.prototype 的初始值是
此属性具有特性 { [[Writable]]:
此函数返回一个新的 promise,其敲定方式与第一个被敲定的所传 promise 相同。它在运行此算法时会将所传 iterable 的所有元素解决为 promise。
如果 iterable 实参不产生任何值,或者如果 iterable 产生的 promise 都永远不敲定,则此方法返回的待定 promise 永远不会被敲定。
此函数期望其 resolve 方法。
The abstract operation PerformPromiseRace takes arguments iteratorRecord (an
此函数返回一个以传入实参拒绝的新 promise。
此函数期望其
此函数要么返回一个以所传实参解决的新 promise,要么如果该实参是由此构造器产生的 promise,则返回该实参自身。
此函数期望其
The abstract operation PromiseResolve takes arguments ctor (an Object) and resolution (an ECMAScript language value) and returns either a normal completion containing an Object or a throw completion. 它返回一个以 resolution 解决的新 promise。 It performs the following steps when called:
此函数在被调用时执行以下步骤:
此函数期望其
此函数返回一个具有三个属性的对象:一个新的 promise,以及与其关联的 resolve 和 reject 函数。
Promise[%Symbol.species%] 是
此函数的
Promise 原型方法通常使用其
Promise 原型对象:
此方法在被调用时执行以下步骤:
Promise.prototype.constructor 的初始值是
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
The abstract operation PerformPromiseThen takes arguments promise (a Promise), onFulfilled (an ECMAScript language value), and onRejected (an ECMAScript language value) and optional argument resultCapability (a
此属性具有特性 { [[Writable]]:
Promise 实例是
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[PromiseState]] |
|
支配 promise 将如何对传入的 then 方法调用作出反应。
|
| [[PromiseResult]] |
|
promise 已被兑现或拒绝所用的值(如果有)。当且仅当 [[PromiseState]] 是 |
| [[PromiseFulfillReactions]] |
|
当/如果 promise 从 |
| [[PromiseRejectReactions]] |
|
当/如果 promise 从 |
| [[PromiseIsHandled]] | Boolean | 指示 promise 是否曾经具有兑现或拒绝 handler;用于未处理拒绝跟踪。 |
GeneratorFunction 是通常通过求值
GeneratorFunction 构造器:
Function 的子类。GeneratorFunction (…) 等价于具有相同实参的对象创建表达式 new GeneratorFunction (…)。extends 子句的值。意图继承指定 GeneratorFunction 行为的子类构造器,必须super 调用,以创建并初始化具有内置 GeneratorFunction 行为所需内部槽的子类实例。所有用于定义 generator function 对象的 ECMAScript 语法形式都会创建 GeneratorFunction 的直接实例。没有语法方式可以创建 GeneratorFunction 子类的实例。最后一个实参(如果有)指定 generator function 的主体(可执行代码);任何在前的实参指定形式参数。
此函数在被调用时执行以下步骤:
见
GeneratorFunction 构造器:
GeneratorFunction.prototype 的初始值是
此属性具有特性 { [[Writable]]:
GeneratorFunction 原型对象:
GeneratorFunction.prototype.constructor 的初始值是
此属性具有特性 { [[Writable]]:
GeneratorFunction.prototype.prototype 的初始值是
此属性具有特性 { [[Writable]]:
此属性具有特性 { [[Writable]]:
每个 GeneratorFunction 实例都是 ECMAScript
每个 GeneratorFunction 实例具有以下自有属性:
每当创建一个 GeneratorFunction 实例时,还会创建另一个
此属性具有特性 { [[Writable]]:
不同于 Function 实例,作为 GeneratorFunction 的
AsyncGeneratorFunction 是通常通过求值
AsyncGeneratorFunction 构造器:
Function 的子类。AsyncGeneratorFunction (...) 等价于具有相同实参的对象创建表达式 new AsyncGeneratorFunction (...)。extends 子句的值。意图继承指定 AsyncGeneratorFunction 行为的子类构造器,必须super 调用,以创建并初始化具有内置 AsyncGeneratorFunction 行为所需内部槽的子类实例。所有用于定义 async generator function 对象的 ECMAScript 语法形式都会创建 AsyncGeneratorFunction 的直接实例。没有语法方式可以创建 AsyncGeneratorFunction 子类的实例。最后一个实参(如果有)指定 async generator function 的主体(可执行代码);任何在前的实参指定形式参数。
此函数在被调用时执行以下步骤:
见
AsyncGeneratorFunction 构造器:
AsyncGeneratorFunction.prototype 的初始值是
此属性具有特性 { [[Writable]]:
AsyncGeneratorFunction 原型对象:
AsyncGeneratorFunction.prototype.constructor 的初始值是
此属性具有特性 { [[Writable]]:
AsyncGeneratorFunction.prototype.prototype 的初始值是
此属性具有特性 { [[Writable]]:
此属性具有特性 { [[Writable]]:
每个 AsyncGeneratorFunction 实例都是 ECMAScript
每个 AsyncGeneratorFunction 实例具有以下自有属性:
此属性具有特性 { [[Writable]]:
每当创建一个 AsyncGeneratorFunction 实例时,还会创建另一个
此属性具有特性 { [[Writable]]:
不同于 function 实例,作为 AsyncGeneratorFunction 的
Generator 通过调用 generator function 创建,并且同时符合
Generator 实例直接继承创建该实例的 generator function 的
%GeneratorPrototype% 对象:
.constructor 的初始值是
此属性具有特性 { [[Writable]]:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此属性具有特性 { [[Writable]]:
Generator 实例最初创建时具有
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[GeneratorState]] |
|
generator 的当前执行状态。 |
| [[GeneratorContext]] |
|
执行此 generator 的代码时使用的执行上下文。 |
| [[GeneratorBrand]] |
String 或 |
用于区分不同种类 generator 的品牌。由 ECMAScript 源文本声明的 generator 的 [[GeneratorBrand]] 始终是 |
The abstract operation GeneratorStart takes arguments gen (a Generator) and genBody (a
The abstract operation GeneratorValidate takes arguments gen (an ECMAScript language value) and genBrand (a String or
The abstract operation GeneratorResume takes arguments gen (an ECMAScript language value), value (an ECMAScript language value or
The abstract operation GeneratorResumeAbrupt takes arguments gen (an ECMAScript language value), abruptCompletion (a return completion or a throw completion), and genBrand (a String or
The abstract operation GetGeneratorKind takes no arguments and returns
The abstract operation GeneratorYield takes argument iteratorResult (an Object that conforms to the IteratorResult interface) and returns either a normal completion containing an ECMAScript language value or an abrupt completion. It performs the following steps when called:
The abstract operation Yield takes argument arg (an ECMAScript language value) and returns either a normal completion containing an ECMAScript language value or an abrupt completion. It performs the following steps when called:
The abstract operation CreateIteratorFromClosure takes arguments closure (an
AsyncGenerator 通过调用 async generator function 创建,并且同时符合
AsyncGenerator 实例直接继承创建该实例的 async generator function 的
%AsyncGeneratorPrototype% 对象:
.constructor 的初始值是
此属性具有特性 { [[Writable]]:
此属性具有特性 { [[Writable]]:
AsyncGenerator 实例最初创建时具有下面描述的内部槽:
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[AsyncGeneratorState]] | async generator 的当前执行状态。 | |
| [[AsyncGeneratorContext]] | 执行此 async generator 的代码时使用的执行上下文。 | |
| [[AsyncGeneratorQueue]] | 表示恢复 async generator 请求的 |
|
| [[GeneratorBrand]] | String 或 |
用于区分不同种类 async generator 的品牌。由 ECMAScript 源文本声明的 async generator 的 [[GeneratorBrand]] 始终是 |
AsyncGeneratorRequest 是一种
它们具有以下字段:
| 字段名 | 值 | 含义 |
|---|---|---|
| [[Completion]] | 应用来恢复 async generator 的 |
|
| [[Capability]] | 与此请求关联的 promise capability。 |
The abstract operation AsyncGeneratorStart takes arguments gen (an AsyncGenerator) and genBody (a
The abstract operation AsyncGeneratorValidate takes arguments gen (an ECMAScript language value) and genBrand (a String or
The abstract operation AsyncGeneratorEnqueue takes arguments gen (an AsyncGenerator), completion (a
The abstract operation AsyncGeneratorCompleteStep takes arguments gen (an AsyncGenerator), completion (a
The abstract operation AsyncGeneratorResume takes arguments gen (an AsyncGenerator) and completion (a
The abstract operation AsyncGeneratorUnwrapYieldResumption takes argument resumptionValue (a
The abstract operation AsyncGeneratorYield takes argument arg (an ECMAScript language value) and returns either a normal completion containing an ECMAScript language value or an abrupt completion. It performs the following steps when called:
The abstract operation AsyncGeneratorAwaitReturn takes argument gen (an AsyncGenerator) and returns
The abstract operation AsyncGeneratorDrainQueue takes argument gen (an AsyncGenerator) and returns
AsyncFunction 是通常通过求值
AsyncFunction 构造器:
Function 的子类。AsyncFunction(…) 等价于具有相同实参的对象创建表达式 new AsyncFunction(…)。extends 子句的值。意图继承指定 AsyncFunction 行为的子类构造器,必须super 调用,以创建并初始化具有内置 async function 行为所需内部槽的子类实例。所有用于定义 async function 对象的 ECMAScript 语法形式都会创建 AsyncFunction 的直接实例。没有语法方式可以创建 AsyncFunction 子类的实例。最后一个实参(如果有)指定 async function 的主体(可执行代码)。任何在前的实参指定形式参数。
此函数在被调用时执行以下步骤:
AsyncFunction 构造器:
AsyncFunction.prototype 的初始值是
此属性具有特性 { [[Writable]]:
AsyncFunction 原型对象:
AsyncFunction.prototype.constructor 的初始值是
此属性具有特性 { [[Writable]]:
此属性具有特性 { [[Writable]]:
每个 AsyncFunction 实例都是 ECMAScript
每个 AsyncFunction 实例具有以下自有属性:
The abstract operation AsyncFunctionStart takes arguments promiseCapability (a
The abstract operation AsyncBlockStart takes arguments promiseCapability (a
The abstract operation Await takes argument arg (an ECMAScript language value) and returns either a normal completion containing either an ECMAScript language value or