eslint/require-await Pedantic
작동 방식
await 표현식이 없는 비동기 함수를 금지합니다.
참고
이 규칙은 타입 인식(typescript/require-await) 규칙보다 정확도가 낮습니다. 타입 인식 규칙을 사용하는 경우, 언제나 이 규칙보다 그 규칙을 우선적으로 사용하세요.
왜 문제가 될까?
자바스크립트의 비동기 함수는 두 가지 중요한 점에서 다른 함수와 다릅니다:
- 반환 값은 항상
Promise입니다. - 함수 내부에서
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