Promise.then
.then(onFulfilled, onRejected)
Promiseの処理の後続として呼ばれる
成功した場合は、 onFulfilled
が呼ばれる
失敗した場合は、 onRejected
が呼ばれる
これらはいずれも関数
多くの場合、第二引数は省略され、代わりに .catch()
が利用される
この第1引数 resolve
が、Promise定義内の resolve
と見なせる
Promiseを作るときに resolve
にちゃんと型を当てていると fn
は上手く推論される
tsnew Promise((resolve: (arg: number) => void) => {
setTimeout(() => {
resolve(10);
}, 16);
});
こう書いたほうがシンプル.tsnew Promise<number>((resolve) => {
setTimeout(() => {
resolve(10);
}, 16);
});
型を書かないと、 .then(v => void)
のときの v
は unknown
になる
Promiseが失敗したときは呼ばれない