?
u
m
/
p
1-9
0
`
インタフェースとは、対応する値が特定の仕様に適合する
iterable インタフェース は
プロパティ (Property) | 値 (Value) | 要件 (Requirements) |
---|---|---|
%Symbol.iterator%
|
イテレータオブジェクトを返す関数 (a function that returns an |
返されるオブジェクトは |
iterator インタフェース を実装するオブジェクトは
プロパティ (Property) | 値 (Value) | 要件 (Requirements) |
---|---|---|
|
IteratorResult オブジェクトを返す関数 (a function that returns an |
返されるオブジェクトは next メソッドへの以前の呼び出しが next 呼び出しも |
next
関数に引数を渡すことができるが、その解釈と妥当性は対象イテレータに依存する。for-of 文および他の一般的なイテレータ利用者は引数を渡さないため、そのように利用されることを想定するイテレータオブジェクトは引数なしで呼ばれる状況に対処できなければならない。
プロパティ (Property) | 値 (Value) | 要件 (Requirements) |
---|---|---|
|
IteratorResult オブジェクトを返す関数 (a function that returns an |
返されるオブジェクトは next メソッドを呼び出す意図がないことをイテレータオブジェクトへ通知する。返される IteratorResult オブジェクトは典型的に return メソッドの引数として渡された値を持つ |
|
IteratorResult オブジェクトを返す関数 (a function that returns an |
返されるオブジェクトは throw することである。メソッドが throw しない場合、返される IteratorResult オブジェクトは通常 |
通常これらのメソッドの呼び出し側は、呼び出す前に存在確認を行うべきである。for
-of
、yield*
、配列の分割代入などの特定の ECMAScript 言語機能は存在確認後にこれらを呼び出す。引数として
async iterable インタフェース は
プロパティ (Property) | 値 (Value) | 要件 (Requirements) |
---|---|---|
%Symbol.asyncIterator% |
非同期イテレータオブジェクトを返す関数 (a function that returns an |
返されるオブジェクトは |
async iterator インタフェース を実装するオブジェクトは
プロパティ (Property) | 値 (Value) | 要件 (Requirements) |
---|---|---|
IteratorResult オブジェクトの promise を返す関数 (a function that returns a promise for an |
返される promise は、履行時に さらに、履行値となる IteratorResult オブジェクトの |
next
関数には引数を渡せるが、その解釈と妥当性は対象となる async イテレータに依存する。for
-await
-of
文および他の一般的な async イテレータ利用者は引数を渡さないため、そのような利用を想定する async イテレータオブジェクトは引数なし呼び出しに備える必要がある。
プロパティ (Property) | 値 (Value) | 要件 (Requirements) |
---|---|---|
IteratorResult オブジェクトの promise を返す関数 (a function that returns a promise for an |
返される promise は履行時に さらに、履行値となる IteratorResult オブジェクトの |
|
IteratorResult オブジェクトの promise を返す関数 (a function that returns a promise for an |
返される promise は履行時に 返される promise が履行された場合、履行値である IteratorResult オブジェクトは通常 |
通常これらのメソッドの呼び出し側は存在確認を行ってから呼び出すべきである。for
-await
-of
や yield*
を含む特定の ECMAScript 言語機能は存在確認後にこれらを呼び出す。
IteratorResult インタフェース は
プロパティ (Property) | 値 (Value) | 要件 (Requirements) |
---|---|---|
|
真偽値 (a Boolean) |
これはイテレータの next メソッド呼び出しの結果状態である。イテレータの終端に到達した場合 |
|
ECMAScript 言語値 (an ECMAScript language value) |
done が |
Iterator Helper オブジェクト は、特定のソースイテレータオブジェクトの遅延変換を表す通常のオブジェクトである。Iterator Helper オブジェクト用の名前付き
%IteratorHelperPrototype% オブジェクト:
このプロパティは属性 { [[Writable]]:
Iterator
この関数は呼び出されると次を実行する:
%WrapForValidIteratorPrototype% オブジェクト:
Iterator.prototype の初期値は
このプロパティは属性 { [[Writable]]:
Iterator プロトタイプオブジェクト:
この仕様で
次の式は ECMAScript コードが %Iterator.prototype% オブジェクトにアクセスする一つの方法である:
Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))
Iterator.prototype.constructor
は属性 { [[Enumerable]]:
[[Get]] 属性の値は引数を必要としない組み込み関数であり、呼び出されると次を実行する:
[[Set]] 属性の値は引数 v を取る組み込み関数であり、呼び出されると次を実行する:
ほとんどの組み込みプロトタイプ上の
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
このメソッドは呼び出されると次を実行する:
この関数は呼び出されると次を実行する:
この関数の
Iterator.prototype[%Symbol.toStringTag%]
は属性 { [[Enumerable]]:
[[Get]] 属性の値は引数を必要としない組み込み関数であり、呼び出されると次を実行する:
[[Set]] 属性の値は引数 v を取る組み込み関数であり、呼び出されると次を実行する:
ほとんどの組み込みプロトタイプ上の
%AsyncIteratorPrototype% オブジェクト:
この仕様で
この関数は呼び出されると次を実行する:
この関数の
Async-from-Sync Iterator オブジェクト は特定の同期イテレータを適応させる async イテレータである。Async-from-Sync Iterator オブジェクトは ECMAScript コードから直接アクセスされることはない。名前付き
The abstract operation CreateAsyncFromSyncIterator takes argument syncIteratorRecord (an
%AsyncFromSyncIteratorPrototype% オブジェクト:
throw
メソッドがない場合、capability を拒否する前にクリーンアップの機会を与えるため閉じる。throw
メソッドがない)を示す Async-from-Sync
内部スロット (Internal Slot) | 型 (Type) | 説明 (Description) |
---|---|---|
[[SyncIteratorRecord]] |
|
適応対象となる元の同期イテレータを表す (Represents the original synchronous |
The abstract operation AsyncFromSyncIteratorContinuation takes arguments result (an Object), promiseCapability (a
Promise は、延期された(かつ非同期である可能性のある)計算の最終的な結果に対するプレースホルダーとして使われるオブジェクトである。
任意の Promise は互いに排他的な 3 つの状態のいずれかにある: fulfilled(履行済)、rejected(拒否済)、pending(保留):
p
が fulfilled であるとは、p.then(f, r)
が直ちに関数 f
を呼び出す p
が rejected であるとは、p.then(f, r)
が直ちに関数 r
を呼び出す Promise が settled(確定)であるとは、それが pending でない(すなわち fulfilled か rejected である)ことをいう。
Promise が resolved であるとは、それが settled であるか、他の Promise の状態に一致するよう「ロックイン」された場合をいう。resolved な Promise をさらに resolve あるいは reject しようとしても効果はない。Promise が resolved でない場合、それは unresolved である。unresolved な Promise は常に pending 状態である。resolved な Promise は pending / fulfilled / rejected のいずれにもなり得る。
PromiseCapability Record は、ある Promise(または Promise 風オブジェクト)と、それを解決または拒否できる関数をカプセル化するために用いられる
PromiseCapability Record は
フィールド名 | 値 | 意味 |
---|---|---|
[[Promise]] | Object | Promise として使用可能なオブジェクト。 |
[[Resolve]] |
|
対象の Promise を解決するために使われる関数。 |
[[Reject]] |
|
対象の Promise を拒否するために使われる関数。 |
IfAbruptRejectPromise は
は次と同じ意味である:
PromiseReaction Record は、ある Promise が特定の値で解決または拒否されたときにどのように反応すべきかを格納するための
PromiseReaction Record は
フィールド名 | 値 | 意味 |
---|---|---|
[[Capability]] |
|
このレコードがリアクションハンドラを提供する Promise のケイパビリティ。 |
[[Type]] |
|
[[Handler]] が |
[[Handler]] |
|
入力値に適用され、その戻り値が派生 Promise の挙動を決定する関数。[[Handler]] が |
The abstract operation CreateResolvingFunctions takes argument promise (a Promise) and returns [[Resolve]] (
Promise reject 関数は [[Promise]] と [[AlreadyResolved]] 内部スロットを持つ匿名組み込み関数である。
Promise reject 関数が引数 reason で呼ばれたとき、次を行う:
Promise reject 関数の
Promise resolve 関数は [[Promise]] と [[AlreadyResolved]] 内部スロットを持つ匿名組み込み関数である。
Promise resolve 関数が引数 resolution で呼ばれたとき、次を行う:
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 は次の 2 つの状況で呼ばれる:
典型的な実装は、未処理拒否を開発者に通知しようと試みる一方で、後からハンドラが追加されて以前の通知が無効化される場合にも注意深く通知する。
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 の挙動を継承することを意図するサブクラスのPromise
および Promise.prototype
の組み込みメソッドをサポートするために必要な内部状態でサブクラスインスタンスを生成・初期化するため、Promise super
呼び出しを含めなければならない。この関数は呼び出されると次の手順を実行する:
executor 引数は
executor に渡される resolve 関数は 1 つの引数を受け取る。executor コードは最終的に resolve を呼び、関連する Promise を解決したい意図を示すことができる。resolve に渡される引数は遅延処理の最終的な値を表し、実際の履行値か、履行された場合にその値を与える別の Promise のいずれかである。
executor に渡される reject 関数は 1 つの引数を受け取る。executor コードは最終的に reject を呼び、関連する Promise が拒否され決して履行されないことを示すことができる。reject に渡される引数は Promise の拒否理由として用いられ、典型的には Error オブジェクトである。
Promise
Promise
この関数は、渡された Promise 群について、その履行値の配列で履行される新しい Promise を返す。あるいは最初に拒否された Promise の理由で拒否される。実行中、渡された
The abstract operation GetPromiseResolve takes argument promiseConstructor (a constructor) and returns 正常完了で
The abstract operation PerformPromiseAll takes arguments iteratorRecord (an
Promise.all
Resolve 要素関数 (Promise.all
Resolve Element Functions)Promise.all
Resolve 要素関数 (Promise.all
Resolve Element Functions)Promise.all
Resolve 要素関数 (Promise.all
Resolve Element Functions)Promise.all
Resolve 要素関数は特定の Promise.all
の要素を解決するために使われる匿名組み込み関数である。各 Promise.all
Resolve 要素関数は [[Index]], [[Values]], [[Capability]], [[RemainingElements]], [[AlreadyCalled]] 内部スロットを持つ。
Promise.all
Resolve 要素関数が引数 x で呼ばれたとき、次を行う:
Promise.all
Resolve 要素関数の
この関数は、元のすべての Promise が確定(fulfilled か rejected)した後に、Promise 状態スナップショットの配列で履行される Promise を返す。実行中、渡された
The abstract operation PerformPromiseAllSettled takes arguments iteratorRecord (an
Promise.allSettled
Resolve 要素関数 (Promise.allSettled
Resolve Element Functions)Promise.allSettled
Resolve 要素関数 (Promise.allSettled
Resolve Element Functions)Promise.allSettled
Reject 要素関数 (Promise.allSettled
Reject Element Functions)Promise.allSettled
Reject 要素関数 (Promise.allSettled
Reject Element Functions)Promise.allSettled
Resolve 要素関数 (Promise.allSettled
Resolve Element Functions)Promise.allSettled
Resolve 要素関数は特定の Promise.allSettled
の要素を解決するために使われる匿名組み込み関数である。各 Promise.allSettled
Resolve 要素関数は [[Index]], [[Values]], [[Capability]], [[RemainingElements]], [[AlreadyCalled]] 内部スロットを持つ。
Promise.allSettled
Resolve 要素関数が引数 x で呼ばれたとき、次を行う:
Promise.allSettled
Resolve 要素関数の
Promise.allSettled
Reject 要素関数 (Promise.allSettled
Reject Element Functions)Promise.allSettled
Reject 要素関数は特定の Promise.allSettled
の要素を拒否させるために使われる匿名組み込み関数である。各 Promise.allSettled
Reject 要素関数は [[Index]], [[Values]], [[Capability]], [[RemainingElements]], [[AlreadyCalled]] 内部スロットを持つ。
Promise.allSettled
Reject 要素関数が引数 x で呼ばれたとき、次を行う:
Promise.allSettled
Reject 要素関数の
この関数は、最初に fulfilled になった渡された Promise の値で履行されるか、すべてが拒否された場合には拒否理由を保持する AggregateError
で拒否される Promise を返す。実行中、渡された
The abstract operation PerformPromiseAny takes arguments iteratorRecord (an
Promise.any
Reject 要素関数 (Promise.any
Reject Element Functions)Promise.any
Reject 要素関数 (Promise.any
Reject Element Functions)Promise.any
Reject 要素関数 (Promise.any
Reject Element Functions)Promise.any
Reject 要素関数は特定の Promise.any
要素を拒否するために使われる匿名組み込み関数である。各 Promise.any
Reject 要素関数は [[Index]], [[Errors]], [[Capability]], [[RemainingElements]], [[AlreadyCalled]] 内部スロットを持つ。
Promise.any
Reject 要素関数が引数 x で呼ばれたとき、次を行う:
Promise.any
Reject 要素関数の
Promise.prototype
の初期値は
このプロパティは属性 { [[Writable]]:
この関数は、渡された Promise 群のうち最初に確定したものと同じ方法で確定する新しい Promise を返す。実行中、渡された iterable の各要素を Promise に解決する。
iterable 引数が値を一切生成しないか、生成された Promise がいずれも確定しない場合、このメソッドが返す pending 状態の Promise は確定しないままである。
The abstract operation PerformPromiseRace takes arguments iteratorRecord (an
この関数は渡された引数で拒否された新しい Promise を返す。
この関数は、引数がこの
The abstract operation PromiseResolve takes arguments C (an Object) and x (an ECMAScript language value) and returns 正常完了で ECMAScript 言語値を含むか、または
この関数は呼び出されたとき次の手順を実行する:
この関数は 3 つのプロパティ(新しい Promise とそれに結び付けられた resolve
/ reject
関数)を持つオブジェクトを返す。
Promise[%Symbol.species%]
は set アクセサ関数が
この関数の
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 インスタンスは(組み込み
Internal Slot | Type | Description |
---|---|---|
[[PromiseState]] |
|
その then メソッドへの呼び出しに対し Promise がどのように反応するかを制御する。
|
[[PromiseResult]] |
ECMAScript 言語値または |
Promise が履行または拒否された値(存在する場合)。 |
[[PromiseFulfillReactions]] |
|
|
[[PromiseRejectReactions]] |
|
|
[[PromiseIsHandled]] | Boolean | 一度でも履行または拒否ハンドラを持ったことがあるかを示す;未処理拒否の追跡に使用される。 |
GeneratorFunction は、通常
GeneratorFunction
Function
のサブクラスである。GeneratorFunction (…)
は同じ引数でのオブジェクト生成式 new GeneratorFunction (…)
と同等である。extends
句の値として使用できる。指定された GeneratorFunction の挙動を継承することを意図するサブクラスのsuper
呼び出しを含めなければならない。ジェネレータ最後の引数(もしあれば)がジェネレータ関数の本体(実行コード)を指定し、それ以前の引数が仮引数を指定する。
この関数は呼び出されると次の手順を実行する:
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
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 インスタンスは
Internal Slot | Type | Description |
---|---|---|
[[GeneratorState]] |
|
ジェネレータの現在の実行状態。 |
[[GeneratorContext]] | 実行コンテキスト | このジェネレータのコードを実行する際に使用される実行コンテキスト。 |
[[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
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 正常完了で ECMAScript 言語値を含むか、または
The abstract operation Yield takes argument value (an ECMAScript language value) and returns 正常完了で ECMAScript 言語値を含むか、または
The abstract operation CreateIteratorFromClosure takes arguments closure (an
AsyncGenerator は非同期ジェネレータ関数を呼び出すことで生成され、非同期イテレータインタフェースおよび非同期
AsyncGenerator インスタンスは、それを生成した非同期ジェネレータ関数の
%AsyncGeneratorPrototype% オブジェクト:
.constructor
の初期値は
このプロパティは属性 { [[Writable]]:
このプロパティは属性 { [[Writable]]:
AsyncGenerator インスタンスは初期化時に以下の内部スロットを持つ:
Internal Slot | Type | Description |
---|---|---|
[[AsyncGeneratorState]] | 非同期ジェネレータの現在の実行状態。 | |
[[AsyncGeneratorContext]] | an |
この非同期ジェネレータのコードを実行する際に用いる実行コンテキスト。 |
[[AsyncGeneratorQueue]] | a |
非同期ジェネレータ再開要求を表すレコード。状態遷移中を除き、[[AsyncGeneratorState]] が |
[[GeneratorBrand]] | a String or |
異なる種類の非同期ジェネレータを識別するブランド。ECMAScript ソースで宣言されたものの [[GeneratorBrand]] は常に |
AsyncGeneratorRequest は、非同期ジェネレータをどのように再開すべきかの情報を保持し、対応する promise を履行または拒否するためのケイパビリティを含む
以下のフィールドを持つ:
Field Name | Value | Meaning |
---|---|---|
[[Completion]] | a |
非同期ジェネレータを再開する際に使用すべき |
[[Capability]] | a |
この要求に関連付けられた 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 正常完了で ECMAScript 言語値を含むか、または
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 正常完了で ECMAScript 言語値または