Flutter/Dart
비동기처리
doublerabbits
2022. 6. 20. 22:48
main() {
printGreeting('World');
printGreeting('Dart');
printGreeting('Flutter');
print('step 1');
print('step 2');
print('step 3');
print('end');
}
Future printGreeting(String s) async {
var greetingString = await getGreeting(s);
print(greetingString);
}
getGreeting(String s) {
return 'Hello $s !!';
}
step 1
step 2
step 3
end
Hello World !!
Hello Dart !!
Hello Flutter !!
printGreeting() 처리 절차
1. Future 와 async 사이에 있는 함수 printGreeting 은 비동기 함수로 인식 된다.
2. printGreeting 안의 await 가 붙은 함수를 비동기로 처리하고 결과를 Future 클래스에.저장한다.
3. 제어권은 비동기 처리와 동시에 바로 반환되면.printGreeting() 함수를 호출한 함수의 코드가 먼저 실행된다.
4. printGreeting() 함수를 호출한 함수의 코드가 모두 실행되면, Future 클래스에 저장된 데이터를 이용 printGreeting() 함수의 나머지 코드가 실행된다.
void main() async {
printFirst();
printSecond();
printThird();
}
void printFirst() {
print('1st');
}
void printSecond() async {
Future.delayed(Duration(seconds: 1), () {
print('delay one second');
});
print('2nd');
}
void printThird() {
print('3rd');
}
1st
2nd
3rd
delay one second
1. printFirst() 실행 : '1st'
2. printSecond() 실행 -> async 에 의해 : '2nd'
3. printThird() 실행 : '3rd'
4. 2에서 딜레이 된 기능 실행 : 'delay one second'
void main() async {
printFirst();
printSecond();
printThird();
}
void printFirst() {
print('1st');
}
void printSecond() async {
await Future.delayed(Duration(seconds: 1), () {
print('delay one second');
});
print('2nd');
}
void printThird() {
print('3rd');
}
1st
3rd
delay one second
2nd
1. printFirst() 실행 : '1st'
2. printSecond() 실행 -> await 에 의해 함수 벗어남
3. printThird() 실행 : '3rd'
4. 2에서 await 된 기능 실행 : 'delay one second', '2nd'