Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- StatefulWidget
- 1과목
- 안드로이드 스튜디오
- 회원가입
- IOS
- swift
- Null Safety
- Android
- java
- 안드로이드
- Cocoa touch Framework
- UserAccountsDrawerHeader
- firebase_auth
- flutter
- auth
- 함수
- 상태관리
- Kotlin
- GetX
- 이메일
- dart
- setState
- non-nullable
- firebase
- go_router
- BottomNavigationBar
- Provider
- 정보처리기사
- 로그인
- 변수
Archives
- Today
- Total
앱 개발 공부방
flutter - 동기,비동기 프로그래밍 본문
728x90
동기 프로그래밍은 한 번에 함수를 실행하면 다음 함수가 실행되기 전에 해당 함수의 결괏값이 먼저 반환됩니다
하지만 비동기 프로그래밍은 요청한 결과를 기다리지 않아서 순서가 다르게 호출될수있지만 컴퓨터 자원을 낭비하지 않으며 효율적으로 코드를 실행할 수 있다
void asyncTest(int a, int b) {
print('$a + $b 시작');
Future.delayed(const Duration(seconds: 2), () {
print('결과 ${a + b}입니다');
});
print('끝');
}
이런 식으로 결과를 보는 2번째 함수가 끝나기 전에 마지막 print가 출력되고 2초 있다가 결과를 보여주는 함수가 호출됩니다
여기서 async와 await를 사용하여 비동기 처리를 해봅시다
//async 키워드는 함수 매개변수 정의와 바디 사이에 입력
Future<void> asyncTest(int a, int b) async{
print('$a + $b 시작');
//await는 대기하고 싶은 비동기 함수 앞에 입력
await Future.delayed(const Duration(seconds: 2), () {
print('결과 ${a + b}입니다');
});
print('끝');
}
await를 건 함수가 끝난 뒤에 끝을 호출하는 함수가 실행돼서 원하는 대로 순서대로 출력되는 걸 볼 수 있습니다.
void main() {
asyncTest(5, 7);
asyncTest(3, 1);
}
위는 asyncTest 메서드 자체에 비동기 처리를 안 해서 위 결과처럼 출력이 됩니다
원하는 대로 출력하기 위해선 위에서 비동기 처리를 해주듯 asyncTest에도 await로 비동기 처리를 해줍니다
void main() async{
await asyncTest(5, 7);
await asyncTest(3, 1);
}
위 결과처럼 await가 걸려서 첫 번째 asyncTest 가 실행되고 끝나면 두 번째 asyncTest가 실행됩니다!
728x90
'FLUTTER' 카테고리의 다른 글
flutter - go_router 정보랑 같이 보내기 (1) | 2023.12.05 |
---|---|
flutter - go_router 사용해서 라우팅하기 (0) | 2023.12.05 |
flutter - 오버라이드 (1) | 2023.12.05 |
flutter - Null Safety (0) | 2023.12.05 |
flutter - dart문법 상속 (0) | 2023.11.30 |
Comments