Promise: then と catch
これらのコードフラグメントは等しいですか?言い換えると、どんな状況やどんなハンドラ関数でも同じように動作しますか?
promise.then(f1).catch(f2);
と
promise.then(f1, f2);
簡単な答えはノー、等しくありませんです。
違いは、f1でエラーが発生した場合、ここで.catchで処理されることです。
promise
.then(f1)
.catch(f2);
…しかし、ここでではありません
promise
.then(f1, f2);
それは、エラーがチェーンに渡され、2番目のコードピースではf1の下にチェーンがないためです。
言い換えると、.thenは結果またはエラーを次の.then/catchに渡します。したがって、最初の例では下にcatchがあり、2番目の例ではありませんので、エラーは処理されません。