引数: (PromiseReaction Record, value)
以下のように reaction を実行する Job を作成して返す。
resolve(value)
的に、 Reject ならば reject(value)
的に扱う。PromiseReaction Record
(PromiseCapability Record, Fulfill or Reject, JobCallback Record or empty) のレコード。
FulfillPromise
Promise Resolve Function のサブルーチン。 FulfillPromise(promise, value) の形式。
PerformPromiseThen
引数: (promise, onfulfill, onreject, resultCapability?)
capability がない場合があり、 await 式の場合が該当する。
Promise インスタンスの内部プロパティ
Promise のインスタンスが、その機能の実現のため内部に保持するプロパティについて:
CreateResolvingFunctions
Promise Resolve Function と Promise Reject Function のペアを作成する。それぞれ AlreadyResolved を共有するため、ペアで作成される必要がある。
HostEnqueuePromiseJob
enqueueMicroTask の tc39 上での用語。 この enqueue した順番に各 Job は呼び出される必要がある。 (厳密に queue であることが要求される。)
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