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) 내에서 a가 정의되지 않기 때문입니다.

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

사용 방법

구성 파일이나 명령줄 인터페이스에서 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:

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

참고 자료