학습 목표
1.dart 비동기 프로그래밍에 대한 개념을 이해하자.
동기성 - 모든 코드가 순차적으로 진행되는 형태
비동기- 코드가 동시다발적으로 실행, 순차적으로 보장을 할 수 없는 형태
dart 비동기 프로그래밍은 프로그램의 흐름을 중단시키지 않고, 무언가의 완료를 기다리는 동안 다른 작업을 수행할 수 있게 해줍니다. Dart에서는 이를 위해 Future와 Stream이라는 두 가지 주요 개념을 제공합니다.
// 키워드 묶음 // async / await / Future : 1회만 응답을 돌려 받는 경우 // async* / yield / Stream : 지속적으로 응답을 돌려 받아야 하는 경우 |
시나리오 코드1 - Future 타입 사용해보기
1 단계
2 단계
3 단계
규칙 : await 키워드를 사용하는, 포함하고 있는 함수는 반드시 함수 선언부에 async 키워드를 선언해주어야 한다.
await 키워드 사용시 async 키워드를 붙여야 하는 이유
가독성: async 키워드를 붙이는 것은 해당 함수 내에서 await 키워드를 사용할 수 있음을 명시적으로 나타냅니다. 이는 함수의 정의를 보는 즉시 해당 함수가 비동기 로직을 포함하고 있음을 알려줍니다.
반환 유형: async 함수는 항상 Future를 반환합니다. 만약 값을 반환한다면, 그 값은 Future<T>로 자동 감싸집니다. 이는 호출자에게 이 함수가 비동기적으로 실행될 수 있음을 알려주며, 그 결과를 적절하게 처리해야 함을 의미합니다.
오류 처리: async 함수 내에서 발생한 예외는 자동으로 Future에 캡쳐됩니다. 이렇게 하면 호출자는 catchError 메소드를 사용하여 비동기 오류를 쉽게 처리할 수 있습니다.
이해도를 높이기 위한 코드 작성
방법 1 - (await, async 사용)
방법 2 - (Future.then() 콜백 메서드 활용)
Key Point Future 타입을 소화 시키는 방법 1. 동기적 프로그래밍으로 만들어 준다. 2. 콜백 메서드로 활용 한다. 3. 하나의 비동기 작업을 처리하기 위해 두 가지 방법을 혼합하여 사용할 수도 있다. |
동기적 프로그래밍으로 만들어 준다: 실제로 Future 값을 다룰 때는 async와 await 키워드를 사용하여 코드를 마치 동기적으로 실행되는 것처럼 작성할 수 있습니다. 이 방식은 코드의 가독성을 향상시키며, 비동기 로직을 순차적으로 이해하기 쉽게 해줍니다.
콜백 메서드로 활용한다: Future.then(), Future.catchError(), 그리고 Future.finally()와 같은 메서드를 사용하여 Future의 결과나 오류를 처리할 수 있습니다. 이 방식은 전통적인 콜백 스타일로 비동기 작업을 처리하는 방법입니다.
하지만, 이 두 방법은 서로 배타적인 것은 아닙니다. 즉, 하나의 비동기 작업을 처리하기 위해 두 가지 방법을 혼합하여 사용할 수도 있습니다.
시나리오 코드 - Future 타입에 함수 활용
'Flutter > Dart' 카테고리의 다른 글
dart 비동기 프로그래밍 -3 (0) | 2023.09.20 |
---|---|
dart 비동기 프로그래밍 -2 (0) | 2023.09.19 |
dart null Safety (0) | 2023.09.19 |
dart 제네릭 (0) | 2023.09.19 |
dart Mixin(믹스인) 클래스 (1) | 2023.09.19 |