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
- array
- 주말에도 1일 1쿼리
- 2일차
- LinkedList
- null check 연산자
- mysql mongo 성능 비교
- 주말도 한다
- 다중상속
- my_sql
- ?. ?? ! late
- 추상클래스
- flutter 믹스인
- FLUTTER
- jmeter
- 주말도 식지않아
- null 억제 연산자
- 비동기 처리
- late 키워드
- 앱개발 가보자고
- dart
- 배열과 리스트
- rdbms nosql 차이
- null 병합 연산자
- 1일 1쿼리
- 컴포지션과 집합
- 오늘은 1일 2쿼리
- MySQL
- 콜백 함수
- SQL
- null safety
Archives
- Today
- Total
subindev 님의 블로그
[Flutter] #12 Dart 비동기 프로그래밍 본문
Dart 비동기 프로그래밍 정리
학습 목표
- Dart 비동기 프로그래밍의 개념 이해
- Future 타입에 대한 이해
- Future 타입과 Future.delayed 함수 사용 실습
1. Dart 비동기 프로그래밍이란?
동기성 (Synchronous)
- 코드가 순차적으로 진행됩니다.
- 이전 작업이 끝나야 다음 작업을 시작할 수 있습니다.
- 예: 파일 읽기 작업 완료 후에야 다음 코드 실행.
비동기성 (Asynchronous)
- 코드가 동시다발적으로 실행됩니다.
- 작업 순서를 보장하지 않으며, 기다리는 동안 다른 작업을 수행합니다.
- Dart는 Future 타입을 사용해 비동기 작업을 처리합니다.
2. Future 타입이란?
- Future 객체: 미래에 값이나 오류를 반환할 것을 약속하는 데이터 타입입니다.
- 비동기 작업을 쉽게 처리하기 위해 async와 await 키워드를 사용합니다.
- async: 함수가 비동기적으로 동작함을 컴파일러에 알립니다.
- await: Future가 완료될 때까지 기다린 후 다음 코드를 실행합니다.
3. Future 사용 예제
시나리오 코드 1: 기본 Future 사용
void main() async {
print('task 1 ...........');
var data1 = await fetchData(); // 비동기 작업 완료 대기
print('task 2 ...........');
print('task 3 ...........');
print('data1 확인 : ${data1}');
}
Future<String> fetchData() {
return Future.delayed(
Duration(seconds: 3), // 3초 지연
() {
return '3초 동안 기다렸어!!!'; // 결과 반환
},
);
}
- fetchData() 함수는 3초 후에 문자열을 반환합니다.
- await를 사용해 동기적 방식으로 비동기 작업을 처리합니다.
시나리오 코드 2: Future와 await로 연산 처리
void main() async {
await addNumber1(10, 20); // 두 수의 합 구하기
print('메인 함수 완료');
}
Future<void> addNumber1(int n1, int n2) async {
print('addNumber1 함수 시작');
var result = 0;
await Future.delayed(Duration(seconds: 3), () {
result = n1 + n2; // 3초 후 결과 계산
});
print('addNumber1 연산 완료 : ${result}');
}
- Future.delayed를 통해 지연 시간을 설정한 후 계산 결과를 출력합니다.
시나리오 코드 3: then()을 사용한 Future 처리
void main() {
addNumber2(10, 5).then((value) => print("결과값 출력 : ${value}"));
print('main() 함수 종료');
}
Future<int> addNumber2(int n1, int n2) {
return Future.delayed(Duration(seconds: 3), () => n1 + n2);
}
- then()을 사용해 콜백 방식으로 결과를 처리합니다.
- await 대신 then()으로 Future 완료 시점을 처리할 수 있습니다.
4. 정리
- async/await: 비동기 코드를 동기적으로 작성할 수 있도록 해줍니다.
- Future.delayed: 비동기 작업에 지연을 추가하는 함수입니다.
- then(): 콜백 스타일로 Future 작업을 처리합니다
'앱개발 > Flutter' 카테고리의 다른 글
[Flutter] 채팅방 인터렉션 로직들 (1) | 2025.01.22 |
---|---|
[Flutter] #11 콜백 함수의 이해 (0) | 2025.01.20 |
[Flutter] #10 Stack 위젯 (1) | 2025.01.14 |
[Flutter] #9 ListView, GridView, PageView 위젯 (0) | 2025.01.14 |
[Flutter] #8 - 플러터의 핵심 철학과 프로젝트 구조 (0) | 2025.01.14 |