?um/p1-90`接口是一组
可迭代接口包含
实现迭代器接口的对象必须包含
| 属性 | 值 | 要求 |
|---|---|---|
|
|
一个返回 IteratorResult 对象的函数 |
返回的对象必须符合 next 方法的前一次调用返回了一个 next 方法的所有调用也应返回一个 |
可以向 next 函数传递实参,但这些实参的解释和有效性取决于目标迭代器。for-of 语句和迭代器的其他常见使用者不会传递任何实参,因此期望以这种方式使用的迭代器对象必须准备好处理无实参调用。
| 属性 | 值 | 要求 |
|---|---|---|
|
|
一个返回 IteratorResult 对象的函数 |
返回的对象必须符合 next 方法。返回的 IteratorResult 对象通常会有一个值为 return 方法实参传入的值。不过,此要求不强制执行。
|
|
|
一个返回 IteratorResult 对象的函数 |
返回的对象必须符合 throw 作为实参传入的值。如果该方法不 throw,则返回的 IteratorResult 对象通常会有一个值为 |
通常,这些方法的调用者在调用之前应检查它们是否存在。某些 ECMAScript 语言特性,包括 for-of、yield* 和数组解构,会在执行存在性检查后调用这些方法。大多数接受可迭代对象作为实参的 ECMAScript 库函数也会有条件地调用它们。
异步可迭代接口包含
实现异步迭代器接口的对象必须包含
| 属性 | 值 | 要求 |
|---|---|---|
| 一个返回 IteratorResult 对象 promise 的函数 |
返回的 promise 在兑现时,必须以一个符合 此外,作为兑现值的 IteratorResult 对象应有一个 |
可以向 next 函数传递实参,但这些实参的解释和有效性取决于目标异步迭代器。for-await-of 语句和异步迭代器的其他常见使用者不会传递任何实参,因此期望以这种方式使用的异步迭代器对象必须准备好处理无实参调用。
| 属性 | 值 | 要求 |
|---|---|---|
| 一个返回 IteratorResult 对象 promise 的函数 |
返回的 promise 在兑现时,必须以一个符合 此外,作为兑现值的 IteratorResult 对象应有一个 |
|
| 一个返回 IteratorResult 对象 promise 的函数 |
返回的 promise 在兑现时,必须以一个符合 如果返回的 promise 被兑现,则 IteratorResult 对象兑现值通常会有一个值为 |
通常,这些方法的调用者在调用之前应检查它们是否存在。某些 ECMAScript 语言特性,包括 for-await-of 和 yield*,会在执行存在性检查后调用这些方法。
IteratorResult 接口包含
| 属性 | 值 | 要求 |
|---|---|---|
|
|
一个布尔值 |
这是迭代器 next 方法调用的结果状态。如果已到达迭代器的末尾, |
|
|
一个 |
如果 done 为 |
迭代器辅助对象是一个
%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 对象是适配特定同步迭代器的异步迭代器。Async-from-Sync Iterator 对象永远不能被 ECMAScript 代码直接访问。Async-from-Sync Iterator 对象没有具名
The abstract operation CreateAsyncFromSyncIterator takes argument syncIteratorRecord (一个
%AsyncFromSyncIteratorPrototype% 对象:
throw 方法,则关闭它,让它有机会在我们拒绝 capability 之前进行清理。throw 方法。Async-from-Sync
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[SyncIteratorRecord]] |
一个 |
表示正在被适配的原始同步迭代器。 |
The abstract operation AsyncFromSyncIteratorContinuation takes arguments result (一个 Object), promiseCapability (内在
Promise 是一种对象,用作延迟的(并且可能是异步的)计算的最终结果的占位符。
任何 Promise 都处于三种互斥状态之一:fulfilled、rejected 和 pending:
p.then(f, r) 会立即将一个调用函数 f 的 p 为 fulfilled。
p.then(f, r) 会立即将一个调用函数 r 的 p 为 rejected。
如果一个 promise 不是 pending,也就是说如果它是 fulfilled 或 rejected,则称该 promise 为 settled。
如果一个 promise 已 settled,或者已被“锁定”以匹配另一个 promise 的状态,则该 promise 为 resolved。尝试 resolve 或 reject 一个已 resolved 的 promise 不会产生任何效果。如果一个 promise 不是 resolved,则它为 unresolved。一个 unresolved 的 promise 总是处于 pending 状态。一个 resolved 的 promise 可以是 pending、fulfilled 或 rejected。
PromiseCapability Record 是一种
PromiseCapability Record 具有
| 字段名 | 值 | 含义 |
|---|---|---|
| [[Promise]] | 一个 Object | 一个可用作 promise 的对象。 |
| [[Resolve]] |
一个 |
用于 resolve 给定 promise 的函数。 |
| [[Reject]] |
一个 |
用于 reject 给定 promise 的函数。 |
IfAbruptRejectPromise 是使用
含义与以下内容相同:
PromiseReaction Record 是一种
PromiseReaction Record 具有
| 字段名 | 值 | 含义 |
|---|---|---|
| [[Capability]] |
一个 |
此记录为其提供 reaction 处理器的 promise 的 capability。 |
| [[Type]] |
|
当 [[Handler]] 为 |
| [[Handler]] |
一个 |
应应用于传入值的函数,其返回值将决定派生 promise 会发生什么。如果 [[Handler]] 为 |
The abstract operation CreateResolvingFunctions takes argument toResolve (一个 Promise) and returns 一个具有字段 [[Resolve]](一个
The abstract operation FulfillPromise takes arguments promise (一个 Promise) and value (一个
The abstract operation NewPromiseCapability takes argument constructor (一个 resolve 和 reject 函数。该 promise 以及 resolve 和 reject 函数用于初始化新的
The abstract operation IsPromise takes argument value (一个
The abstract operation RejectPromise takes arguments promise (一个 Promise) and reason (一个
The abstract operation TriggerPromiseReactions takes arguments reactions (
The host-defined abstract operation HostPromiseRejectionTracker takes arguments promise (一个 Promise) and operation (
HostPromiseRejectionTracker 的默认实现是返回
HostPromiseRejectionTracker 在两种场景中被调用:
HostPromiseRejectionTracker 的典型实现可能会尝试通知开发者未处理的 rejection,同时也会注意在这种先前通知后来因附加了新处理器而失效时通知他们。
如果 operation 是
The abstract operation NewPromiseReactionJob takes arguments reaction (一个
The abstract operation NewPromiseResolveThenableJob takes arguments promiseToResolve (一个 Promise), thenable (一个 Object), and then (一个
Promise
extends 子句中的值。意图继承指定 Promise 行为的子类super 调用,以使用支持 Promise 和 Promise.prototype 内置方法所需的内部状态来创建并初始化子类实例。此函数在被调用时执行以下步骤:
executor 实参必须是
传递给 executor 函数的 resolve 函数接受一个实参。executor 代码最终可以调用 resolve 函数,以指示它希望 resolve 关联的 Promise。传递给 resolve 函数的实参表示延迟动作的最终值,可以是实际的 fulfillment 值,也可以是另一个 promise;如果该 promise 被 fulfilled,它将提供该值。
传递给 executor 函数的 reject 函数接受一个实参。executor 代码最终可以调用 reject 函数,以指示关联的 Promise 被 rejected 且永远不会 fulfilled。传递给 reject 函数的实参用作该 promise 的 rejection 值。通常它会是一个 Error 对象。
Promise
Promise
此函数返回一个新的 promise,该 promise 以传入的各 promise 的 fulfillment 值数组 fulfilled,或者以第一个被 rejected 的传入 promise 的 reason rejected。它在运行此算法时将传入
The abstract operation GetPromiseResolve takes argument promiseConstructor (一个
The abstract operation PerformPromiseAll takes arguments iteratorRecord (an
此函数返回一个 promise,该 promise 以 promise 状态快照数组 fulfilled,但仅在所有原始 promise 都 settled,即变为 fulfilled 或 rejected 之后才会如此。它在运行此算法时将传入
The abstract operation PerformPromiseAllSettled takes arguments iteratorRecord (an
此函数返回一个 promise,该 promise 由第一个 fulfilled 的给定 promise 使其 fulfilled,或者如果所有给定 promise 都被 rejected,则以持有各 rejection reason 的 AggregateError rejected。它在运行此算法时将传入
The abstract operation PerformPromiseAny takes arguments iteratorRecord (an
Promise.prototype 的初始值是
此属性具有属性特性 { [[Writable]]:
此函数返回一个新的 promise,其 settled 方式与第一个 settled 的传入 promise 相同。它在运行此算法时将传入的 iterable 的所有元素 resolve 为 promise。
如果 iterable 实参不产生任何值,或者 iterable 产生的 promise 都永远不 settle,那么此方法返回的 pending promise 将永远不会 settled。
The abstract operation PerformPromiseRace takes arguments iteratorRecord (an
此函数返回一个以传入实参 rejected 的新 promise。
此函数返回一个以传入实参 resolved 的新 promise,或者如果该实参是由此
The abstract operation PromiseResolve takes arguments constructor (an Object) and resolution (an ECMAScript language value) and returns either a normal completion containing an Object or a throw completion. 它返回一个以 resolution resolved 的新 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 已被 fulfilled 或 rejected 时所使用的值(如果有)。当且仅当 [[PromiseState]] 是 |
| [[PromiseFulfillReactions]] |
|
当/如果 promise 从 |
| [[PromiseRejectReactions]] |
|
当/如果 promise 从 |
| [[PromiseIsHandled]] | 一个 Boolean | 表示该 promise 是否曾经有过 fulfillment 或 rejection 处理器;用于未处理 rejection 跟踪。 |
GeneratorFunction 是通常通过求值
GeneratorFunction
Function 的子类。GeneratorFunction (…) 等价于使用相同实参的对象创建表达式 new GeneratorFunction (…)。extends 子句的值。意图继承指定 GeneratorFunction 行为的子类super 调用,以使用内置 GeneratorFunction 行为所需的内部槽来创建并初始化子类实例。所有用于定义 generator 最后一个实参(如果有)指定 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 最后一个实参(如果有)指定 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 函数创建,并且同时符合
Generator 实例直接继承创建该实例的 generator 函数的
%GeneratorPrototype% 对象:
.constructor 的初始值是
此属性具有属性特性 { [[Writable]]:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此属性具有属性特性 { [[Writable]]:
Generator 实例最初会以
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[GeneratorState]] |
|
generator 的当前执行状态。 |
| [[GeneratorContext]] |
一个 |
执行此 generator 的代码时使用的 |
| [[GeneratorBrand]] |
一个 String 或 |
用于区分不同种类 generator 的品牌。由 |
The abstract operation GeneratorStart takes arguments generator (一个 Generator) and generatorBody (一个
The abstract operation GeneratorValidate takes arguments generator (一个
The abstract operation GeneratorResume takes arguments generator (一个
The abstract operation GeneratorResumeAbrupt takes arguments generator (一个
The abstract operation GetGeneratorKind takes no arguments and returns
The abstract operation GeneratorYield takes argument iteratorResult (一个符合
The abstract operation Yield takes argument value (一个
The abstract operation CreateIteratorFromClosure takes arguments closure (一个无参数
AsyncGenerator 通过调用 async generator 函数创建,并且同时符合
AsyncGenerator 实例直接继承创建该实例的 async generator 函数的
%AsyncGeneratorPrototype% 对象:
.constructor 的初始值是
此属性具有属性特性 { [[Writable]]:
此属性具有属性特性 { [[Writable]]:
AsyncGenerator 实例最初会以下面描述的内部槽创建:
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[AsyncGeneratorState]] | async generator 的当前执行状态。 | |
| [[AsyncGeneratorContext]] | 一个 |
执行此 async generator 的代码时使用的 |
| [[AsyncGeneratorQueue]] | 表示恢复 async generator 请求的记录。除状态转换期间外,当且仅当 [[AsyncGeneratorState]] 是 |
|
| [[GeneratorBrand]] | 一个 String 或 |
用于区分不同种类 async generator 的品牌。由 |
AsyncGeneratorRequest 是一种
它们具有以下字段:
| 字段名 | 值 | 含义 |
|---|---|---|
| [[Completion]] | 一个 |
应当用于恢复 async generator 的 |
| [[Capability]] | 一个 |
与此请求关联的 promise capability。 |
The abstract operation AsyncGeneratorStart takes arguments generator (一个 AsyncGenerator) and generatorBody (一个
The abstract operation AsyncGeneratorValidate takes arguments generator (一个
The abstract operation AsyncGeneratorEnqueue takes arguments generator (一个 AsyncGenerator), completion (一个
The abstract operation AsyncGeneratorCompleteStep takes arguments generator (一个 AsyncGenerator), completion (一个
The abstract operation AsyncGeneratorResume takes arguments generator (一个 AsyncGenerator) and completion (一个
The abstract operation AsyncGeneratorUnwrapYieldResumption takes argument resumptionValue (一个
The abstract operation AsyncGeneratorYield takes argument value (一个
The abstract operation AsyncGeneratorAwaitReturn takes argument generator (一个 AsyncGenerator) and returns
The abstract operation AsyncGeneratorDrainQueue takes argument generator (一个 AsyncGenerator) and returns
AsyncFunction 是通常通过求值
AsyncFunction
Function 的子类。AsyncFunction(…) 等价于使用相同实参的对象创建表达式 new AsyncFunction(…)。extends 子句的值。意图继承指定 AsyncFunction 行为的子类super 调用,以使用内置 async 函数行为所需的内部槽来创建并初始化子类实例。所有用于定义 async 最后一个实参(如果有)指定 async 函数的函数体(可执行代码)。任何前面的实参指定形式参数。
此函数在被调用时执行以下步骤:
AsyncFunction
AsyncFunction.prototype 的初始值是
此属性具有属性特性 { [[Writable]]:
AsyncFunction 原型对象:
AsyncFunction.prototype.constructor 的初始值是
此属性具有属性特性 { [[Writable]]:
此属性具有属性特性 { [[Writable]]:
每个 AsyncFunction 实例都是 ECMAScript
每个 AsyncFunction 实例都具有以下自有属性:
The abstract operation AsyncFunctionStart takes arguments promiseCapability (一个
The abstract operation AsyncBlockStart takes arguments promiseCapability (一个
The abstract operation Await takes argument value (一个