引数: (promise, onfulfill, onreject, resultCapability?)
capability がない場合があり、 await 式の場合が該当する。
await
async 関数の呼び出しに伴い作成される asyncContext に対する操作がセットになっている。
HostEnqueuePromiseJob
enqueueMicroTask の tc39 上での用語。 この enqueue した順番に各 Job は呼び出される必要がある。 (厳密に queue であることが要求される。)
NewPromiseReactionJob
引数: (PromiseReaction Record, value)
以下のように reaction を実行する Job を作成して返す。
PromiseReaction Record
(PromiseCapability Record, Fulfill or Reject, JobCallback Record or empty) のレコード。
Promise.prototype.then
ざっくり、 NewPromiseCapability して PerformPromiseThen (this, arg1, arg2, capability) する。
FulfillPromise
Promise Resolve Function のサブルーチン。 FulfillPromise(promise, value) の形式。
Promise インスタンスの内部プロパティ
Promise のインスタンスが、その機能の実現のため内部に保持するプロパティについて:
Promise Resolve Function
new Promise((resolve) => ...)
するときの resolve
関数の実態。
[[Promise]] と [[AlreadyResolved]] の内部レコードを持つ。
CreateResolvingFunctions
Promise Resolve Function と Promise Reject Function のペアを作成する。それぞれ AlreadyResolved を共有するため、ペアで作成される必要がある。
NewPromiseCapability
引数: コンストラクタ
返り値: PromiseCapability Record
処理: new して、その際に resolve, reject を取り出して、それらをまとめて capability record へまとめて return
PromiseCapability Record
([[Promise]], [[Resolve]], [[Reject]]) なレコード。 jQuery の Deferred の処理系内部実装のようなもの。
PromiseResolve
Promise.resolve の処理そのもの。 引数が Promise だったならばそのまま返し、 そうでなければ NewPromiseCapability して、即座に resolve を呼び、その promise を return