?
u
m
/
p
1-9
0
`
接口是其关联值符合特定规范的一组
iterable interface 包含
实现 iterator interface 的对象必须包含
属性 | 值 | 要求 |
---|---|---|
|
一个返回 IteratorResult 对象的函数 |
返回的对象必须符合 IteratorResult 接口。如果之前对该迭代器的 next 方法的一次调用返回了 next 调用也应当返回 |
可以向 next
函数传递参数,但其含义与合法性取决于目标迭代器。for-of 语句及其他常见迭代器使用者不会传递任何参数,所以期望以这种方式使用的迭代器对象必须准备好在无参数情况下被调用。
属性 | 值 | 要求 |
---|---|---|
|
一个返回 IteratorResult 对象的函数 |
返回的对象必须符合 IteratorResult 接口。调用此方法通知迭代器对象调用方不打算再进行任何 next 方法调用。返回的 IteratorResult 对象通常具有 return 方法的参数值。然而,这一要求不强制执行。
|
|
一个返回 IteratorResult 对象的函数 |
返回的对象必须符合 IteratorResult 接口。调用此方法通知迭代器对象调用方检测到错误条件。该参数可用于标识错误条件,通常会是一个异常对象。典型响应是 throw 传入的参数值。如果该方法未 throw ,返回的 IteratorResult 对象通常具有 |
通常这些方法的调用方在调用前应检查其是否存在。包括 for
-of
、yield*
和数组解构在内的某些 ECMAScript 语言特性会在进行存在性检查后调用这些方法。大多数接受
async iterable interface 包含
属性 | 值 | 要求 |
---|---|---|
%Symbol.asyncIterator% |
一个返回 async 迭代器对象的函数 | 返回的对象必须符合 |
实现 async iterator interface 的对象必须包含
属性 | 值 | 要求 |
---|---|---|
一个返回 Promise(兑现为 IteratorResult 对象)的函数 |
返回的 promise 在兑现时,必须以符合 IteratorResult 接口的对象兑现。如果之前对某 async 迭代器的 另外,作为兑现值的 IteratorResult 对象的 |
可以向 next
函数传递参数,但其解释与有效性取决于目标 async 迭代器。for
-await
-of
语句及其他常见 async 迭代器使用者不会传递任何参数,因此期望这样使用的 async 迭代器对象必须准备好在无参数情况下被调用。
属性 | 值 | 要求 |
---|---|---|
一个返回 Promise(兑现为 IteratorResult 对象)的函数 |
返回的 promise 在兑现时,必须以符合 IteratorResult 接口的对象兑现。调用此方法通知 async 迭代器对象调用方不打算再对该 async 迭代器进行更多 另外,作为兑现值的 IteratorResult 对象的 |
|
一个返回 Promise(兑现为 IteratorResult 对象)的函数 |
返回的 promise 在兑现时,必须以符合 IteratorResult 接口的对象兑现。调用此方法通知 async 迭代器对象调用方已检测到错误条件。参数可用于标识该错误条件,并且通常为一个异常对象。典型响应是返回一个以该参数值拒绝的被拒绝 promise。 如果返回的 promise 被兑现,IteratorResult 对象兑现值通常具有 |
通常这些方法的调用方在调用前应检查其是否存在。包括 for
-await
-of
和 yield*
在内的某些 ECMAScript 语言特性会在进行存在性检查后调用这些方法。
IteratorResult interface 包含
属性 | 值 | 要求 |
---|---|---|
|
一个 Boolean |
这是迭代器 next 方法调用的结果状态。如果已到达迭代器末尾, |
|
一个 |
如果 done 为 |
Iterator Helper object 是一个
%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 的内置函数。被调用时执行以下步骤:
与大多数内置原型上的
%AsyncIteratorPrototype% 对象:
本规范中所有实现
当调用此函数时,执行以下步骤:
此函数
Async-from-Sync Iterator object 是一个将特定同步迭代器适配为 async 迭代器的对象。Async-from-Sync
The abstract operation CreateAsyncFromSyncIterator takes argument syncIteratorRecord (an
%AsyncFromSyncIteratorPrototype% 对象:
throw
方法,在我们拒绝该 capability 前关闭它以便其有机会清理。throw
方法。Async-from-Sync 迭代器实例是从
内部槽 | 类型 | 描述 |
---|---|---|
[[SyncIteratorRecord]] |
an |
表示正在被适配的原始同步迭代器。 |
The abstract operation AsyncFromSyncIteratorContinuation takes arguments result (an Object), promiseCapability (a
Promise 是一个对象,用作延迟(且可能是异步)计算最终结果的占位符。
任一 Promise 处于三个互斥状态之一:fulfilled、rejected 和 pending:
p
执行 p.then(f, r)
会立即入列一个调用函数 f
的 Job 时,p
为 fulfilled。
p
执行 p.then(f, r)
会立即入列一个调用函数 r
的 Job 时,p
为 rejected。
若一个 promise 不是 pending(即已 fulfilled 或 rejected),则称其为 settled。
一个 promise 若已 settled 或被“锁定”与另一个 promise 的状态匹配,则称其为 resolved。试图 resolve 或 reject 一个已 resolved 的 promise 不产生任何效果。一个 promise 若未 resolved 则为 unresolved。未 resolved 的 promise 始终处于 pending 状态。一个已 resolved 的 promise 可能是 pending、fulfilled 或 rejected。
PromiseCapability Record 是一个
PromiseCapability 记录具有
字段名 | 值 | 含义 |
---|---|---|
[[Promise]] | 一个 Object | 可用作 promise 的对象。 |
[[Resolve]] |
一个 |
用于 resolve 给定 promise 的函数。 |
[[Reject]] |
一个 |
用于 reject 给定 promise 的函数。 |
IfAbruptRejectPromise 是一组使用
等价于:
PromiseReaction Record 是一个
PromiseReaction 记录具有
字段名 | 值 | 含义 |
---|---|---|
[[Capability]] |
一个 |
该记录为其提供 reaction 处理器的 promise 的能力集合。 |
[[Type]] |
|
当 [[Handler]] 为 |
[[Handler]] |
一个 |
应对传入值执行的函数,其返回值决定派生 promise 的后续行为。若 [[Handler]] 为 |
The abstract operation CreateResolvingFunctions takes argument promise (a Promise) and returns 一个具有字段 [[Resolve]] (
Promise reject 函数是一个匿名内置函数,具有 [[Promise]] 与 [[AlreadyResolved]] 内部槽。
当以参数 reason 调用一个 promise reject 函数时,执行以下步骤:
Promise reject 函数的
Promise resolve 函数是一个匿名内置函数,具有 [[Promise]] 与 [[AlreadyResolved]] 内部槽。
当以参数 resolution 调用一个 promise resolve 函数时,执行以下步骤:
Promise resolve 函数的
The abstract operation FulfillPromise takes arguments promise (a Promise) and value (an ECMAScript language value) and returns
The abstract operation NewPromiseCapability takes argument C (an ECMAScript language value) and returns resolve
与 reject
函数。该 promise 及其 resolve
与 reject
函数用于初始化一个新的
The abstract operation IsPromise takes argument x (an ECMAScript language value) and returns 一个 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 在两种场景被调用:
一个典型实现可能尝试通知开发者未处理的拒绝,同时在随后新处理器附加使先前通知失效时再次适当通知。
若 operation 为
The abstract operation NewPromiseReactionJob takes arguments reaction (一个
The abstract operation NewPromiseResolveThenableJob takes arguments promiseToResolve (一个 Promise), thenable (一个 Object), and then (一个
该作业使用提供的 thenable 及其 then
方法来 resolve 给定的 promise。此过程必须作为一个 Job 进行,以确保对 then
方法的求值发生在任意外围代码求值完成之后。
Promise
extends
子句的值。意图继承指定 Promise 行为的子类super
调用,以使用支持 Promise
和 Promise.prototype
内建方法所需的内部状态创建并初始化子类实例。此函数在被调用时执行下列步骤:
executor 参数必须是一个
传给 executor 的 resolve 函数接受一个参数。executor 代码最终可以调用 resolve 来表示其希望 resolve 关联的 Promise。传给 resolve 的参数表示延迟动作的最终值,可以是实际的 fulfill 值,也可以是另一个在 fulfill 后提供该值的 promise。
传给 executor 的 reject 函数接受一个参数。executor 代码最终可以调用 reject 来表示关联的 Promise 已被 reject 且永不会 fulfill。传给 reject 的参数用作该 promise 的拒绝值。典型情况下它将是一个 Error 对象。
Promise
Promise
该函数返回一个新的 promise:若传入的各个 promise 全部 fulfill,则以其 fulfill 值数组进行 fulfill;若其中第一个 reject,则以该 reject 原因进行 reject。它在运行本算法时会将传入可迭代对象的所有元素解析为 promise。
The abstract operation GetPromiseResolve takes argument promiseConstructor (一个 constructor) and returns 要么是包含一个
The abstract operation PerformPromiseAll takes arguments iteratorRecord (一个
Promise.all
Resolve 元素函数Promise.all
Resolve 元素函数Promise.all
Resolve 元素函数Promise.all
resolve 元素函数是一个匿名内建函数,用于 resolve 某个特定的 Promise.all
元素。每个此类函数具有 [[Index]]、[[Values]]、[[Capability]]、[[RemainingElements]] 和 [[AlreadyCalled]] 内部槽。
当一个 Promise.all
resolve 元素函数以参数 x 被调用时,执行下列步骤:
Promise.all
resolve 元素函数的
该函数返回一个 promise,当所有原始 promise 均已 settle(即变为 fulfilled 或 rejected)后,以包含 promise 状态快照的数组 fulfill。它在运行本算法时将传入可迭代对象的所有元素解析为 promise。
The abstract operation PerformPromiseAllSettled takes arguments iteratorRecord (一个
Promise.allSettled
Resolve 元素函数Promise.allSettled
Resolve 元素函数Promise.allSettled
Reject 元素函数Promise.allSettled
Reject 元素函数Promise.allSettled
Resolve 元素函数Promise.allSettled
resolve 元素函数是一个匿名内建函数,用于 resolve 某个特定的 Promise.allSettled
元素。每个此类函数具有 [[Index]]、[[Values]]、[[Capability]]、[[RemainingElements]] 和 [[AlreadyCalled]] 内部槽。
当一个 Promise.allSettled
resolve 元素函数以参数 x 被调用时,执行下列步骤:
Promise.allSettled
resolve 元素函数的
Promise.allSettled
Reject 元素函数Promise.allSettled
reject 元素函数是一个匿名内建函数,用于 reject 某个特定的 Promise.allSettled
元素。每个此类函数具有 [[Index]]、[[Values]]、[[Capability]]、[[RemainingElements]] 和 [[AlreadyCalled]] 内部槽。
当一个 Promise.allSettled
reject 元素函数以参数 x 被调用时,执行下列步骤:
Promise.allSettled
reject 元素函数的
该函数返回一个 promise:由第一个 fulfill 的输入 promise 来 fulfill;如果所有输入 promise 均被 reject,则以一个包含所有拒绝原因的 AggregateError
进行 reject。它在运行本算法时将传入可迭代对象的所有元素解析为 promise。
The abstract operation PerformPromiseAny takes arguments iteratorRecord (一个
Promise.any
Reject 元素函数Promise.any
Reject 元素函数Promise.any
Reject 元素函数Promise.any
reject 元素函数是一个匿名内建函数,用于 reject 某个特定的 Promise.any
元素。每个此类函数具有 [[Index]]、[[Errors]]、[[Capability]]、[[RemainingElements]] 和 [[AlreadyCalled]] 内部槽。
当一个 Promise.any
reject 元素函数以参数 x 被调用时,执行下列步骤:
Promise.any
reject 元素函数的
Promise.prototype
的初始值是
该属性具有 { [[Writable]]:
该函数返回一个新的 promise,其 settle 方式与第一个 settle 的传入 promise 相同。它在运行本算法时将传入的 iterable 的所有元素解析为 promise。
如果 iterable 参数不产生任何值,或其产生的 promise 都永不 settle,则此方法返回的挂起 promise 将永不 settle。
The abstract operation PerformPromiseRace takes arguments iteratorRecord (一个
该函数返回一个以传入参数为拒绝原因而被 reject 的新 promise。
该函数要么返回一个以传入参数 resolve 的新 promise,要么若该参数本身是由此
The abstract operation PromiseResolve takes arguments C (一个 Object) and x (一个
该函数在被调用时执行下列步骤:
该函数返回一个具有三个属性的对象:一个新 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 被 fulfill 或 reject 时的值(若有)。当且仅当 [[PromiseState]] 为 |
[[PromiseFulfillReactions]] |
一个 |
当(如果)promise 从 |
[[PromiseRejectReactions]] |
一个 |
当(如果)promise 从 |
[[PromiseIsHandled]] | 一个 Boolean | 指示该 promise 是否曾拥有过 fulfill 或 reject 处理器;用于未处理拒绝的跟踪。 |
GeneratorFunction 是通常通过求值
GeneratorFunction
Function
的子类。GeneratorFunction (…)
等价于以相同参数的对象创建表达式 new GeneratorFunction (…)
。extends
子句的值。意图继承指定 GeneratorFunction 行为的子类super
调用,以创建并初始化带有内建 GeneratorFunction 行为所需内部槽的子类实例。所有用于定义 generator 最后一个参数(如果存在)指定生成器函数的函数体(可执行代码);之前的任意参数指定形式参数。
该函数被调用时执行以下步骤:
参见
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 最后一个参数(如果存在)指定异步生成器函数的函数体(可执行代码);之前的任意参数指定形式参数。
该函数被调用时执行以下步骤:
参见
AsyncGeneratorFunction
AsyncGeneratorFunction.prototype
的初始值是
该属性具有 { [[Writable]]:
AsyncGeneratorFunction 原型对象:
AsyncGeneratorFunction.prototype.constructor
的初始值是
该属性具有 { [[Writable]]:
AsyncGeneratorFunction.prototype.prototype
的初始值是
该属性具有 { [[Writable]]:
该属性具有 { [[Writable]]:
每个 AsyncGeneratorFunction 实例都是一个 ECMAScript
每个 AsyncGeneratorFunction 实例具有以下自有属性:
该属性具有 { [[Writable]]:
每当创建一个 AsyncGeneratorFunction 实例时,也会创建另一个
该属性具有 { [[Writable]]:
不同于函数实例,AsyncGeneratorFunction 的
Generator 通过调用一个生成器函数创建,并符合迭代器接口与可迭代接口。
Generator 实例直接从创建该实例的生成器函数
%GeneratorPrototype% 对象:
.constructor
的初始值是
该属性具有 { [[Writable]]:
该方法被调用时执行以下步骤:
该方法被调用时执行以下步骤:
该属性具有 { [[Writable]]:
Generator 实例最初按
内部槽 | 类型 | 描述 |
---|---|---|
[[GeneratorState]] |
|
该生成器的当前执行状态。 |
[[GeneratorContext]] | 一个执行上下文 | 执行该生成器代码时使用的执行上下文。 |
[[GeneratorBrand]] |
一个 String 或 |
用于区分不同种类生成器的标记。由 ECMAScript 源文本声明的生成器的 [[GeneratorBrand]] 始终为 |
The abstract operation GeneratorStart takes arguments generator (a Generator) and generatorBody (a
The abstract operation GeneratorValidate takes arguments generator (an ECMAScript language value) and generatorBrand (a String or
The abstract operation GeneratorResume takes arguments generator (an ECMAScript language value), value (an ECMAScript language value or
The abstract operation GeneratorResumeAbrupt takes arguments generator (an ECMAScript language value), abruptCompletion (a return completion or a throw completion), and generatorBrand (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
The abstract operation Yield takes argument value (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 生成器函数创建,并同时符合异步迭代器接口与异步可迭代接口。
AsyncGenerator 实例直接从创建该实例的异步生成器函数
%AsyncGeneratorPrototype% 对象:
.constructor
的初始值是
该属性具有 { [[Writable]]:
该属性具有 { [[Writable]]:
AsyncGenerator 实例最初按如下描述的内部槽创建:
内部槽 | 类型 | 描述 |
---|---|---|
[[AsyncGeneratorState]] | 异步生成器的当前执行状态。 | |
[[AsyncGeneratorContext]] | 一个执行上下文 | 执行该异步生成器代码时使用的执行上下文。 |
[[AsyncGeneratorQueue]] | 一个 |
表示恢复该异步生成器请求的记录。除状态转换期间外,当且仅当 [[AsyncGeneratorState]] 为 |
[[GeneratorBrand]] | 一个 String 或 |
用于区分不同种类异步生成器的标记。由 ECMAScript 源文本声明的异步生成器的 [[GeneratorBrand]] 始终为 |
AsyncGeneratorRequest 是一个
其具有以下字段:
字段名 | 取值 | 含义 |
---|---|---|
[[Completion]] | 一个 |
用于恢复该异步生成器的 |
[[Capability]] | 一个 |
与此请求关联的 promise 能力。 |
The abstract operation AsyncGeneratorStart takes arguments generator (an AsyncGenerator) and generatorBody (a
The abstract operation AsyncGeneratorValidate takes arguments generator (an ECMAScript language value) and generatorBrand (a String or
The abstract operation AsyncGeneratorEnqueue takes arguments generator (an AsyncGenerator), completion (a
The abstract operation AsyncGeneratorCompleteStep takes arguments generator (an AsyncGenerator), completion (a
The abstract operation AsyncGeneratorResume takes arguments generator (an AsyncGenerator) and completion (a
The abstract operation AsyncGeneratorUnwrapYieldResumption takes argument resumptionValue (a
The abstract operation AsyncGeneratorYield takes argument value (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 generator (an AsyncGenerator) and returns
The abstract operation AsyncGeneratorDrainQueue takes argument generator (an AsyncGenerator) and returns
The abstract operation CreateAsyncIteratorFromClosure takes arguments closure (an
AsyncFunction 通常通过求值
AsyncFunction
Function
的子类。AsyncFunction(…)
等价于以相同参数的对象创建表达式 new AsyncFunction(…)
。extends
子句的值。意图继承指定 AsyncFunction 行为的子类super
调用,以创建并初始化具有内建异步函数行为所需内部槽的子类实例。所有用于定义异步最后一个参数(如果存在)指定异步函数的函数体(可执行代码)。之前的任意参数指定形式参数。
该函数被调用时执行以下步骤:
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 value (an ECMAScript language value) and returns either a normal completion containing either an ECMAScript language value or