CS 내용 요약, 지식

내가 보려고 적는 DART의 비동기 프로그래밍

걍판자 2024. 1. 14. 13:46
반응형

출처: 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에 대한 내용은 나중에 더 추가해야 겠다…
반응형