Promiseコンストラクタの型について考えてみる。
from Promise
Promiseコンストラクタの型について考えてみる。
code:d.ts
new Promise<T>(executor:FunctionType<T>)
これはlib.es2015.promise.d.tsから引用したものである。
インターフェースPromiseConstructorで定義されていることが確認できる。
このFunctionTypeはなんであるか
code:ts
type FunctionType<T> = (resolve:ResolveFunc<T>,reject:RejectFunc) => void
という関数型である。さらに、Resolve Rejectについても考えよう。
code:ts
type ResolveFunc<T> := (value?:T|PromiseLike<T>) => void
type RejectFunc := (reason?:any) => void
resolve関数は何をするか?
Promiseオブジェクトはthenメソッド,catchメソッドを持っている。
code:ts
//ほんとは第二引数にonRejectedという引数があり、失敗時のコールバック関数をここに登録できる。
then(onfulfilled:SFunction)
type SFunction := ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null
このthenメソッドの引数(コールバック関数)onfulfilled:((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | nullの引数(value:T)を
resolve関数の実引数resolve:Tとして、thenメソッドをコールバックする。
reject関数は?
catchメソッドの引数onRejected:((reason: any) => TResult | PromiseLike<TResult>) | undefined | nullの引数(reason:any)をreject関数の引数reason:anyに代入する。
#Todo@years PromiseLike型ってなんだ?