Skip to content
← Back to rules

promise/no-nesting スタイル

An auto-fix is available for this rule.

何をするか

ネストされた then() または catch() 句の使用を禁止します。

なぜ問題なのか

プロミスのネストは、コードの読みやすさと理解のしにくさを高めます。

このルールに違反する 誤った 例:

javascript
doThing().then(() => a.then());

doThing().then(function () {
  a.then();
});

doThing().then(() => {
  b.catch();
});

doThing().catch((val) => doSomething(val).catch(errors));

このルールに準拠する 正しい 例:

javascript
doThing().then(() => 4);

doThing().then(function () {
  return 4;
});

doThing().catch(() => 4);
javascript
doThing()
  .then(() => Promise.resolve(1))
  .then(() => Promise.resolve(2));

この例はルール違反ではありません。ここでのアンネスト(ネスト解除)を行うと、getC(a, b) の式内での aundefined となってしまうためです。

javascript
doThing().then((a) => getB(a).then((b) => getC(a, b)));

使い方

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

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

参考資料