일반적인 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();
...
]),