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