unhandledRejectionとrejectionHandled
io.jsのver.1.4くらいからprocess.onでunhandledRejectionとrejectionHandledというイベントが使えるようになったみたいだ。
unhandledRejection
process.on('unhandledRejection', function(reason, p) {
console.log(reason);
console.log(p);
});
new Promise(function(resolve, reject) {
reject({ err: 'error' });
});
$ iojs index.js
{ err: 'error' }
{}
どうもPromiseを使った時にcatchをしていないと呼ばれるようだ。 reasonにはrejectに渡された引数が、pにはPromiseが渡される。
catch忘れの予防として書いておくと嬉しいのだと思う。 それ以外にも何か嬉しい使い方があるんだろうか。
rejectionHandled
何度かテキトーなコードを書いてみたのだけど、よくわからなかった。
later than after an event loop turn.
という記述を見つけたのだけどイベントループ中での処理タイミングが異なるのかな?
とりあえずPromiseを使う上でunhandledRejectionは大事そうなことはわかった。