반응형
출처: https://www.youtube.com/watch?v=rk41rBXq3zQ&t=698s
- 나중에 받아올 자료형은 Future<자료형> 변수명 으로 선언하고, Future.value(값) 으로 받아온다.
- Future.delayed 함수를 통해 몇초 후에 해당 결과를 출력할 수 있다. Future.delayed 함수 아래의 코드를 바로 실행시킨다. 즉, Future.delayed()에서 지연되는 동안 아래코드가 실행되기에 아래코드가 먼저 처리된 것 처럼 보일 수 있다. 그냥 결과 나올때 까지 안 기다려주고, 바로 아래 것 실행하는 거다.
- await 를 Future 앞에 쓰면 Future 코드가 완전히 끝날때까지 기다렸다가 아래코드를 실행시킨다. 단 await을 쓰기 위해서는 await이 들어있는 함수의 파라미터 괄호와 중괄호 사이에 async가 들어가야 한다.
- await 바로 밑의 열만 실행될때까지 기다리는 거지, 다른 프로세스는 정상적으로 실행된다.
void main(){
function(1);
function(2);
}
void function(int para) async{
print("start"$para);
await Future.delayed(Duration(seconds:2),(){
print("wait"$para);
});
print("finsih"$para);
}
- 즉 위의 경우 차례대로 start1, start2, wait1,finish1,wait2,finish2가 출력된다.
- 함수 자체에 Future을 쓸 수도 있다. 함수 자료형 자리에 Future<자료형>을 붙인다. 그리고 함수를 호출할때 앞에 await을 붙인다. 그러면 해당 함수가 끝날때까지 기다리고, 해당 함수를 호출한 코드의 아래 코드 즉 await 아래코드는 실행되지 않고 대기한다.
- Stream은 return대신 yield를 쓰고, return 하면 종료되어 버리는 비동기 프로그래밍을 yield를 통해 여러번 쓸 수 있게 한다.
- Stream에 대한 내용은 나중에 더 추가해야 겠다…
반응형
'CS 내용 요약, 지식' 카테고리의 다른 글
Docker, 쿠버네티스 개념 정리 (4) | 2024.10.08 |
---|---|
데이터 통신 기초 - 3. 물리 계층 (0) | 2024.04.06 |
데이터 통신 기초 - 2. 네트워크 모델 (0) | 2024.03.31 |
데이터 통신 기초 - 1. Overview (0) | 2024.03.31 |
Easy to make Mistakes in Flutter (1) | 2024.01.10 |