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