Skip to content
← Back to rules

promise/prefer-catch スタイル

An auto-fix is available for this rule.

何を実行するか

then(a, b) および then(null, b) の代わりに catch を優先する。このルールでは、プロミスのエラー処理のために then 呼び出しの第二引数に引数を渡すことを禁止する。

なぜ悪いのか

then 呼び出しに二つの引数を使用すると、エラーハンドラーが存在することを認識しにくくなる。また、then 呼び出しの第二引数を使用する場合の別の問題として、プロミスのエラー処理の順序が明らかでなくなることがある。

たとえば、一見して prom.then(fn1, fn2)prom.then(fn1).catch(fn2) と等価のように見えるかもしれない。しかし、これらは等価ではない。実際には prom.catch(fn2).then(fn1) が等価である。このような混乱は、then 呼び出しの第二引数に引数を渡すのではなく、明示的な catch 呼び出しを優先すべき理由となる。

このルールに対して不正なコード例

js
prom.then(fn1, fn2);

prom.then(null, fn2);

このルールに対して正しいコード例

js
prom.catch(fn2).then(fn1);

prom.catch(fn2);

使い方

設定ファイルまたは CLI でこのルールを有効化するには、以下のいずれかを使用できます。

json
{
  "plugins": ["promise"],
  "rules": {
    "promise/prefer-catch": "error"
  }
}
bash
oxlint --deny promise/prefer-catch --promise-plugin

参照