Flutter Future.wait - 다중요청 / 병렬처리

Chance·2022년 12월 20일

Flutter 병렬처리

일반적인 async / await 처리문

import 'dart:math';

void main() async {
  for (int i = 0 ; i < 5 ; i ++) {
    int result = await checkInt(i);
    print('result : $i : $result');
  }
}

Future<int> checkInt(int i) async {
  
  int rndInt = Random().nextInt(4)+1;
  print('in $i');
  
  await Future.delayed(Duration(seconds : rndInt));
  
  return rndInt;
  
}
  • await에서 해당 함수가 모두 끝날 때까지 대기

Future.wait - 병렬처리

import 'dart:math';

List<int> checkIntValue = <int>[];

main() async {

  DateTime start = DateTime.now();
  
  final task = <Future>[];
  
  for (int i = 0 ; i < 5 ; i ++) {
    task.add(checkInt(i));
    checkIntValue.add(0);
  }
  
  await Future.wait(task);
  
  DateTime end = DateTime.now();
  
  print('소요 시간 : ${end.difference(start)}');
  
}

Future<void> checkInt(int i) async {
  
  int rndInt = Random().nextInt(3)+1;
  print('in $i');
  
  await Future.delayed(Duration(seconds : rndInt));
  
  print('return $i : $rndInt');
  
  checkIntValue[i] = rndInt;  
}
  • Future리스트에 Future함수들을 넣는다.
  • Future.wait을 통해 해당 Future함수들을 병렬처리

위젯적용

FutureBuilder<List<Future return value>>(
    future: Future.wait([
        somethingFun_1();
        somethingFun_2();
        ...
    ]),

0개의 댓글