안녕하세요 성장형 개발자입니다.
플러터 공부 중입니다
오늘 공부한 내용을 적어보았습니다
공부한 내용 : 다트 비동기 프로그래밍
* 다트 언어는 동기/비동기 프로그래밍을 지원
ㅇ 동기 : 요청하고 나서 응답이 올 때까지 더는 코드를 진행하지 못하고 기다렸다가 응답을 받으면 그 때 다음 코드 진행
ㅇ 비동기 : 요청하고 나서 응답을 받지 않았어도 대기하지 않고 다음 코드 진행, 언제든 응답이 오면 그때 응답 처리(CPU의 리소르 낭비 방지)
1. Future
ㅇ 미래에 받아올 값
ㅇ 반환값을 딱 한번 받아내는 비동기 프로그래밍에 사용
ㅇ List, Set처럼 제네릭으로 어떤 미래의 값을 받아올지 정할 수 있음
ㅇ 비동기프로그래밍은 서버 요청과 같이 오래 걸리는 작업을 기다린 후 값을 받아와야 하기에 미래값을 표현하는 Future 클래스가 필요
ㅇ Future.delayed() 사용하면 일정 시간 후에 콜백 함수를 실행할 수 있음
Future<String> name; // 미래에 받을 String값
Future<int> number; // 미래에 받을 int값
Future<bool> isOpened; // 미래에 받을 bool값
2. async, await
ㅇ 작성된 순서대로 실행되지 않으면 개발자 입장에서 헷갈릴 수 있음
ㅇ 이 때 async, await 키워드 사용하면 비동기 프로그래밍을 유지하면서 코드 가독성도 유지 가능
ㅇ async 키워드는 함수 매개변수 정의와 바디 사이에 입력
ㅇ await 대기하고 싶은 비동기 함수 앞에 입력
ㅇ 비동기 프로그래밍 특징을 그대로 유지하면서 코드가 작성된 순서대로 프로그램 실행
3. 결괏값 반환받기
ㅇ async, await 키워드를 사용한 함수에서 결괏값을 받아낼 수 있음
ㅇ Future클래스를 사용
ㅇ 적용된 함수에 await를 사용해서 결괏값을 받을 수 있음
4. Stream
ㅇ 지속적으로 값을 반환 받을 때 사용
ㅇ 한 번 listen하면 Stream에 주입되는 모든 값들을 지속적으로 받아옴
ㅇ 기본 사용법
-> 플러터에서 기본 제공하는 dart:async 패키지를 불러와야함( import 'dart:async'; )
-> StreamController를 listen() 해야 값을 지속적으로 반환받을 수 있음.
-> StreamController 에 sink.add()하면 값을 주입함
-> controller.stream
ㅇ 브로드캐스트 스트림
-> Stream은 단 한번만 listen()을 실행할 수 있음
-> 하나의 스트림을 생성하고 여러번 listen() 함수 실행하고 싶을 때 사용
-> controller.stream.asBroadcastStream()
ㅇ 함수로 Stream 반환하기
-> StreamController를 직접 사용하지 않고도 직접 Stream을 반환하는 함수를 작성 가능
-> Future를 반환하는 함수는 async로 함수 선언, return으로 값 반환
-> Stream을 반환하는 함수는 async*로 함수 선언, yield으로 값 반환
- 저자
- 최지호(코드팩토리)
- 출판
- 골든래빗(주)
- 출판일
- 2023.01.01
'개발기록 > Flutter' 카테고리의 다른 글
[flutter log] 플러터 기본 위젯 (0) | 2023.01.17 |
---|---|
[flutter log] 플러터 소개 및 구조 (0) | 2023.01.17 |
[flutter log] 객체지향 프로그래밍 (0) | 2023.01.11 |
[flutter log] 기초 문법 (0) | 2023.01.10 |
[flutter log] flutter를 하게 된 계기 및 계획 (0) | 2023.01.09 |