promise/no-nesting スタイル
何をするか
ネストされた 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) の式内での a が undefined となってしまうためです。
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