본문 바로가기
Flutter/Flutter FAQ

Flutter Dart에서 List.forEach()에서 Async/await를 사용하는 방법, How to Async/await in List.forEach() in Dart

by 베타코드 2023. 6. 24.
반응형

질문


나는 어떤 종류의 봇 (명령 줄 응용 프로그램)을 작성하고 있으며 "forEach" 메서드를 사용할 때 비동기 실행에 문제가 있습니다. 다음은 내가하려는 것을 단순화 한 코드입니다 :

main() async {
  print("main start");
  await asyncOne();
  print("main end");
}

asyncOne() async {
  print("asyncOne start");
  [1, 2, 3].forEach(await (num) async {
    await asyncTwo(num);
  });
  print("asyncOne end");
}

asyncTwo(num) async
{
  print("asyncTwo #${num}");
}

다음은 출력입니다 :

main start
asyncOne start
asyncOne end
main end
asyncTwo #1
asyncTwo #2
asyncTwo #3

내가 얻으려고하는 것은 다음과 같습니다 :

main start
asyncOne start
asyncTwo #1
asyncTwo #2
asyncTwo #3
asyncOne end
main end

누군가 내가 무엇을 잘못하고 있는지 알고 있다면 감사하겠습니다.


답변


Future.forEach를 사용해야합니다.

main() async {
  print("main start");
  await asyncOne();
  print("main end");
}

asyncOne() async {
  print("asyncOne start");
  await Future.forEach([1, 2, 3], (num) async {
    await asyncTwo(num);
  });
  print("asyncOne end");
}

asyncTwo(num) async
{
  print("asyncTwo #${num}");
}
반응형

댓글