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
- null check 연산자
- 빅분기 판다스 100제
- my_sql
- rdbms nosql 차이
- 빅분기 필기 pdf
- SQL
- 주말도 식지않아
- 1일 1쿼리
- sqld 시험 정리
- 작업 2유형
- 컴포지션과 집합
- MySQL
- ?. ?? ! late
- 빅분기 1유형
- 오늘은 1일 2쿼리
- 주말에도 1일 1쿼리
- 빅분기
- null 억제 연산자
- 주말도 한다
- flutter 믹스인
- late 키워드
- 앱개발 가보자고
- 작업 1유형
- null safety
- FLUTTER
- 빅분기 필기
- 빅분기 캐글놀이터
- mysql mongo 성능 비교
- 모델 학습 및 예측
- 빅데이터 분석기사
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 |