?uem/p1-90`接口是一组
| 属性 | 值 | 要求 |
|---|---|---|
%Symbol.iterator%
|
a function that returns an |
返回的对象必须符合 |
实现 iterator 接口的对象必须
| 属性 | 值 | 要求 |
|---|---|---|
|
|
a function that returns an |
返回的对象必须符合 next 方法的调用已经返回了一个 next 方法调用也应返回 |
可以向 next 函数传递参数,但这些参数的解释和有效性取决于目标 iterator。for-of 语句和 iterator 的其他常见使用者不会传递任何参数,因此预期以这种方式使用的 iterator 对象必须能够处理无参数调用。
| 属性 | 值 | 要求 |
|---|---|---|
|
|
a function that returns an |
返回的对象必须符合 next 方法调用。返回的 IteratorResult 对象通常具有值为 return 方法参数传入的值。不过,此要求不会被强制执行。
|
|
|
a function that returns an |
返回的对象必须符合 throw 作为参数传入的值。如果该方法没有 throw,则返回的 IteratorResult 对象通常具有值为 |
通常,这些方法的调用者在调用它们之前应检查它们是否存在。包括 for-of、yield* 和数组解构在内的某些 ECMAScript 语言特性会在执行存在性检查后调用这些方法。大多数接受
async iterable 接口
| 属性 | 值 | 要求 |
|---|---|---|
%Symbol.asyncIterator% |
a function that returns an |
返回的对象必须符合 |
实现 async iterator 接口的对象必须
| 属性 | 值 | 要求 |
|---|---|---|
| a function that returns a promise for an |
返回的 promise 在兑现时,必须以符合 此外,用作兑现值的 IteratorResult 对象应具有一个 |
可以向 next 函数传递参数,但这些参数的解释和有效性取决于目标 async iterator。for-await-of 语句和 async iterator 的其他常见使用者不会传递任何参数,因此预期以这种方式使用的 async iterator 对象必须能够处理无参数调用。
| 属性 | 值 | 要求 |
|---|---|---|
| a function that returns a promise for an |
返回的 promise 在兑现时,必须以符合 此外,用作兑现值的 IteratorResult 对象应具有一个 |
|
| a function that returns a promise for an |
返回的 promise 在兑现时,必须以符合 如果返回的 promise 被兑现,则作为兑现值的 IteratorResult 对象通常具有值为 |
通常,这些方法的调用者在调用它们之前应检查它们是否存在。包括 for-await-of 和 yield* 在内的某些 ECMAScript 语言特性会在执行存在性检查后调用这些方法。
IteratorResult 接口
| 属性 | 值 | 要求 |
|---|---|---|
|
|
a Boolean |
这是 next 方法调用的结果状态。如果已经到达 |
|
|
an ECMAScript language value |
如果 done 为 |
Iterator Helper 对象是表示对某个特定源
%IteratorHelperPrototype% 对象:
此属性具有特性 { [[Writable]]:
Iterator
调用时,此函数执行以下步骤:
%WrapForValidIteratorPrototype% 对象:
Iterator.prototype 的初始值是
此属性具有特性 { [[Writable]]:
调用时,此函数执行以下步骤:
调用时,此函数执行以下步骤:
Iterator 原型对象:
本规范中定义的所有实现
以下表达式是 ECMAScript 代码访问 %Iterator.prototype% 对象的一种方式:
Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))
Iterator.prototype.constructor 是
[[Getter]] 特性的值是一个无需参数的内置函数。调用时,它执行以下步骤:
[[Setter]] 特性的值是一个接受参数 v 的内置函数。调用时,它执行以下步骤:
与大多数内置原型上的
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
此方法将迭代器的值转换为字符串,然后连接这些字符串,并在它们之间插入 separator。如果未提供分隔符,则使用单个逗号作为分隔符。
调用时,它执行以下步骤:
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
此方法的
调用时,此函数执行以下步骤:
此函数的
Iterator.prototype[%Symbol.toStringTag%] 是
[[Getter]] 特性的值是一个无需参数的内置函数。调用时,它执行以下步骤:
[[Setter]] 特性的值是一个接受参数 v 的内置函数。调用时,它执行以下步骤:
与大多数内置原型上的
%AsyncIteratorPrototype% 对象:
本规范中定义的所有实现
调用时,此方法执行以下步骤:
此方法的
调用时,此函数执行以下步骤:
此函数的
Async-from-Sync Iterator 对象是适配某个特定同步
%AsyncFromSyncIteratorPrototype% 对象:
throw 方法,则关闭它,让它有机会在我们拒绝 capability 之前进行清理。throw 方法。Async-from-Sync
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[SyncIteratorRecord]] |
an |
表示正在被适配的原始同步 |
| 属性 | 值 | 要求 |
|---|---|---|
%Symbol.dispose%
|
a function object |
调用此方法会通知 对同一对象多次调用此方法时,应避免对已经处置的资源重复执行清理逻辑,并且即使第一次调用时抛出了异常,也不应抛出异常。不过,此要求不会被强制执行。 将 |
AsyncDisposable 接口
| 属性 | 值 | 要求 |
|---|---|---|
%Symbol.asyncDispose%
|
a function object that returns a 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% 属性的初始值是
%Symbol.toStringTag% 属性的初始值是 String 值
此属性具有特性 { [[Writable]]:
DisposableStack 实例是从
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[DisposableState]] |
|
控制可处置栈如何响应对其 %Symbol.dispose% 方法的调用。
|
| [[DisposableResourceStack]] |
a |
可处置栈被处置时要处置的资源。资源按照初始化顺序添加,并按照相反顺序处置。 |
AsyncDisposableStack 是一种可以用于
任何 AsyncDisposableStack 对象都处于两个互斥状态之一:已处置或待处理。当且仅当既未对 d 调用 d.disposeAsync() 也未调用 d.move() 时,异步可处置栈 d 才处于待处理状态。
AsyncDisposableStack
extends 子句中的值。希望继承指定 AsyncDisposableStack 行为的子类super 调用,以创建并初始化具有支持 AsyncDisposableStack.prototype 内置方法所必需内部状态的子类实例。调用时,此函数执行以下步骤:
AsyncDisposableStack
AsyncDisposableStack.prototype 的初始值是
此属性具有特性 { [[Writable]]:
AsyncDisposableStack 原型对象:
调用时,此方法执行以下步骤:
AsyncDisposableStack.prototype.constructor 的初始值是
调用时,此方法执行以下步骤:
调用时,此异步方法执行以下步骤:
AsyncDisposableStack.prototype.disposed 是
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
%Symbol.asyncDispose% 属性的初始值是
%Symbol.toStringTag% 属性的初始值是 String 值
此属性具有特性 { [[Writable]]:
AsyncDisposableStack 实例是从
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[AsyncDisposableState]] |
|
控制可处置栈如何响应对其 %Symbol.asyncDispose% 方法的调用。
|
| [[DisposableResourceStack]] |
a |
可处置栈被处置时要处置的资源。资源按照初始化顺序添加,并按照相反顺序处置。 |
Promise 是一种用作延迟(并且可能是异步)计算最终结果占位符的对象。
任何 Promise 都处于三个互斥状态之一:已兑现、已拒绝和待处理:
p.then(f, r) 会立即将一个调用函数 f 的 p 已兑现。
p.then(f, r) 会立即将一个调用函数 r 的 p 已拒绝。
如果 promise 不处于待处理状态,即它已兑现或已拒绝,则称该 promise 已敲定。
如果 promise 已敲定,或者已被“锁定”为匹配另一个 promise 的状态,则称该 promise 已解决。尝试解决或拒绝一个已经解决的 promise 不会产生任何效果。如果 promise 尚未解决,则称其未解决。未解决的 promise 始终处于待处理状态。已解决的 promise 可以处于待处理、已兑现或已拒绝状态。
thenable 是一个对象 obj,对其执行
PromiseCapability Record 是用于封装 Promise 或类 promise 对象以及能够解决或拒绝该 promise 的函数的
PromiseCapability Record 具有
| 字段名称 | 值 | 含义 |
|---|---|---|
| [[Promise]] | an Object | 可作为 promise 使用的对象。 |
| [[Resolve]] | a function object | 用于解决给定 promise 的函数。 |
| [[Reject]] | a function object | 用于拒绝给定 promise 的函数。 |
IfAbruptRejectPromise 是一组使用
与以下内容具有相同含义:
PromiseReaction Record 是用于存储有关 promise 在以给定值解决或拒绝时应如何作出反应的信息的
PromiseReaction Record 具有
| 字段名称 | 值 | 含义 |
|---|---|---|
| [[Capability]] |
a |
此 |
| [[Type]] |
|
当 [[Handler]] 为 |
| [[Handler]] |
a |
应应用于传入值的函数,其返回值将决定派生 promise 随后发生什么。如果 [[Handler]] 是 |
resolve 和 reject 函数。该 promise 加上 resolve 和 reject 函数用于初始化新的
宿主定义的抽象操作 HostPromiseRejectionTracker,接收参数 promise (Promise) 和 operation ((
HostPromiseRejectionTracker 的默认实现是返回
HostPromiseRejectionTracker 会在两种情况下被调用:
HostPromiseRejectionTracker 的典型实现可能会尝试向开发者通知未处理的拒绝,同时也会谨慎地在随后附加新处理器而使先前通知失效时通知他们。
如果 operation 是
Promise
extends 子句中的值。希望继承指定 Promise 行为的子类super 调用,以创建并初始化具有支持 Promise 和 Promise.prototype 内置方法所必需内部状态的子类实例。调用时,此函数执行以下步骤:
executor 参数必须是
传递给 executor 函数的 resolve 函数接受一个参数。executor 代码最终可以调用 resolve 函数,以表明它希望解决关联的 Promise。传递给 resolve 函数的参数表示延迟操作的最终值,可以是实际兑现值,也可以是另一个 promise;如果后者被兑现,它将提供该值。
传递给 executor 函数的 reject 函数接受一个参数。executor 代码最终可以调用 reject 函数,以表明关联的 Promise 被拒绝并且永远不会兑现。传递给 reject 函数的参数用作 promise 的拒绝值。通常它会是 Error 对象。
Promise
Promise
此函数返回一个新的 promise,该 promise 会以传入 promise 的兑现值数组兑现;或者以第一个被拒绝的传入 promise 的原因被拒绝。执行此算法时,它会将传入
此函数返回一个 promise,该 promise 会以 promise 状态快照数组兑现,但只会在所有原始 promise 都已敲定(即变为已兑现或已拒绝)之后兑现。执行此算法时,它会将传入
此函数返回一个 promise,该 promise 会由第一个兑现的给定 promise 兑现;如果所有给定 promise 都被拒绝,则以AggregateError 被拒绝。执行此算法时,它会将传入
Promise.prototype 的初始值是
此属性具有特性 { [[Writable]]:
此函数返回一个新的 promise,该 promise 会以与第一个敲定的传入 promise 相同的方式敲定。执行此算法时,它会将传入 iterable 的所有元素都解决为 promise。
如果 iterable 参数不产生任何值,或者 iterable 产生的 promise 都永远不会敲定,那么此方法返回的待处理 promise 将永远不会敲定。
此函数返回一个以传入参数作为拒绝原因的新 promise。
此函数返回一个以传入参数解决的新 promise;或者,如果该参数是由此
调用时,此函数执行以下步骤:
此函数返回一个具有三个属性的对象:一个新的 promise,以及与其关联的 resolve 和 reject 函数。
Promise[%Symbol.species%] 是
此函数的
Promise 原型方法通常使用其
Promise 原型对象:
调用时,此方法执行以下步骤:
Promise.prototype.constructor 的初始值是
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
此属性具有特性 { [[Writable]]:
Promise 实例是从
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[PromiseState]] |
|
控制 promise 如何响应对其 then 方法的调用。
|
| [[PromiseResult]] |
an ECMAScript language value or |
promise 已兑现或拒绝所使用的值(如果有)。当且仅当 [[PromiseState]] 是 |
| [[PromiseFulfillReactions]] |
a |
当且如果 promise 从 |
| [[PromiseRejectReactions]] |
a |
当且如果 promise 从 |
| [[PromiseIsHandled]] | a Boolean | 指示 promise 是否曾经具有兑现或拒绝处理器;用于未处理拒绝跟踪。 |
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]] | an execution context |
执行此 generator 的代码时使用的 |
| [[GeneratorBrand]] |
a String or |
用于区分不同种类 generator 的品牌。由 |
AsyncGenerator 通过调用 async generator 函数创建,并且同时符合
AsyncGenerator 实例直接从创建该实例的 async generator 函数的
%AsyncGeneratorPrototype% 对象:
.constructor 的初始值是
此属性具有特性 { [[Writable]]:
此属性具有特性 { [[Writable]]:
AsyncGenerator 实例最初创建时具有下述内部槽:
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[AsyncGeneratorState]] | async generator 的当前执行状态。 | |
| [[AsyncGeneratorContext]] | an execution context | 执行此 async generator 的代码时使用的 |
| [[AsyncGeneratorQueue]] | a |
表示恢复 async generator 请求的 |
| [[GeneratorBrand]] | a String or |
用于区分不同种类 async generator 的品牌。由 |
AsyncGeneratorRequest 是用于存储有关 async generator 应如何恢复的信息的
它们具有以下字段:
| 字段名称 | 值 | 含义 |
|---|---|---|
| [[Completion]] | a |
应当用于恢复 async generator 的 |
| [[Capability]] | a |
与此请求关联的 promise capability。 |
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 实例都具有以下自有属性: