unnecessary_await_in_return 진단: return에서의 불필요한 await

unnecessary_await_in_return 진단: return에서의 불필요한 await

분석기가 내보내는 진단에는 이름이 있어요. unnecessary_await_in_returnasync 함수나 메서드가 await 표현식을 반환할 때, 그 await가 불필요한 경우 Dart 분석기가 알려주는 진단이에요. 이미 Future를 반환하는 구조에서는 await를 붙여도 결과가 달라지지 않아요.

출처: unnecessary_await_in_return

본문

설명

분석기는 async 함수나 메서드가 await 표현식을 반환하고, awaitFuture의 정적 타입이 선언된 반환 타입의 하위 타입(subtype)일 때 이 진단을 만들어요.

async 함수에서 Future를 반환하면 이미 같은 결과로 완료되는 Future를 만들어 내기 때문에 await는 불필요해요.

단, try 블록 안의 await 표현식에 대해서는 이 진단을 만들지 않아요. await를 제거하면 awaitFuture에서 발생한 오류를 처리하는 방식이 바뀌기 때문이에요.

예시

다음 코드는 함수 f의 반환 타입이 Future<int>인데, 정적 타입 역시 Future<int>Futureawait해서 반환하기 때문에 이 진단을 만들어요.

Future<int> f(Future<int> future) async {
  return await future;
}

흔한 해결 방법

불필요한 await를 제거해요.

Future<int> f(Future<int> future) async {
  return future;
}

더 알아보기