잘못된 문맥의 async for-in
잘못된 문맥의 async for-in (async_for_in_wrong_context)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 async_for_in_wrong_context 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. async나 async*로 표시되지 않은 함수나 메서드 본문 안에서 async for-in 루프를 사용할 때 분석기가 이 진단을 알려 줘요. async for-in 루프는 비동기 함수 안에서만 쓸 수 있기 때문이에요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.
본문
진단 메시지
The async for-in loop can only be used in an async function.
async for-in 루프는 async 함수 안에서만 사용할 수 있어요.
설명
분석기는 본문이 async나 async* 중 어느 것으로도 표시되지 않은 함수나 메서드 안에서 async for-in 루프를 발견하면 이 진단을 만들어 내요.
예시
다음 코드는 f의 본문이 async나 async*로 표시되지 않았는데 f가 async for-in 루프를 포함하고 있기 때문에 이 진단을 만들어 내요.
void f(Stream list) {
await for (var e in list) {
print(e);
}
}
일반적인 해결 방법
함수가 Future를 반환해야 한다면, 본문을 async로 표시해 주세요.
Future f(Stream list) async {
await for (var e in list) {
print(e);
}
}
함수가 값들의 스트림(Stream)을 반환해야 한다면, 본문을 async*로 표시해 주세요.
Stream f(Stream list) async* {
await for (var e in list) {
print(e);
}
}
함수가 동기적이어야 한다면, 루프 앞의 await를 제거해 주세요.
void f(List list) {
for (var e in list) {
print(e);
}
}
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- async for-in과 비동기 프로그래밍에 대한 더 자세한 내용은 Dart 비동기 프로그래밍 문서를 참고해요.