Skip to content
← Back to rules

eslint/require-await Pedantic

⚠️🛠️ A dangerous auto-fix is available for this rule.

작동 방식

await 표현식이 없는 비동기 함수를 금지합니다.

참고

이 규칙은 타입 인식(typescript/require-await) 규칙보다 정확도가 낮습니다. 타입 인식 규칙을 사용하는 경우, 언제나 이 규칙보다 그 규칙을 우선적으로 사용하세요.

왜 문제가 될까?

자바스크립트의 비동기 함수는 두 가지 중요한 점에서 다른 함수와 다릅니다:

  1. 반환 값은 항상 Promise입니다.
  2. 함수 내부에서 await 연산자를 사용할 수 있습니다.

비동기 함수를 사용하는 주된 이유는 일반적으로 await 연산자를 사용하기 때문이며, 다음과 같은 예시처럼 동작합니다:

js
async function fetchData(processDataItem) {
  const response = await fetch(DATA_URL);
  const data = await response.json();

  return data.map(processDataItem);
}

await를 사용하지 않는 비동기 함수는 비동기 함수일 필요가 없으며, 리팩터링 과정에서 의도치 않게 생길 수 있습니다.

참고: 이 규칙은 비동기 제너레이터 함수를 무시합니다. 제너레이터는 값을 반환하기보다는 양보(여기서는 yield)하기 때문에, 비동기 제너레이터는 다른 비동기 제너레이터의 모든 값을 양보할 수 있으며, 실제로 await를 사용할 필요가 없을 수 있기 때문입니다.

예시

이 규칙에 잘못된 코드 예시:

js
async function foo() {
  doSomething();
}

이 규칙에 올바른 코드 예시:

js
async function foo() {
  await doSomething();
}

사용 방법

설정 파일이나 명령줄 인터페이스를 통해 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "require-await": "error"
  }
}
bash
oxlint --deny require-await

참조