앱 개발 공부방

flutter - 동기,비동기 프로그래밍 본문

FLUTTER

flutter - 동기,비동기 프로그래밍

춘행이 2023. 12. 5. 13:31
728x90

동기 프로그래밍은 한 번에 함수를 실행하면 다음 함수가 실행되기 전에 해당 함수의 결괏값이 먼저 반환됩니다

 

하지만 비동기 프로그래밍은 요청한 결과를 기다리지 않아서 순서가 다르게 호출될수있지만 컴퓨터 자원을 낭비하지 않으며 효율적으로 코드를 실행할 수 있다

 

void asyncTest(int a, int b) {
  print('$a + $b 시작');

  Future.delayed(const Duration(seconds: 2), () {
    print('결과 ${a + b}입니다');
  });

  print('끝');
}

이런 식으로 결과를 보는 2번째 함수가 끝나기 전에 마지막 print가 출력되고 2초 있다가 결과를 보여주는 함수가 호출됩니다

 

여기서 async와 await를 사용하여 비동기 처리를 해봅시다 

//async 키워드는 함수 매개변수 정의와 바디 사이에 입력
Future<void> asyncTest(int a, int b) async{
  print('$a + $b 시작');
  
  //await는 대기하고 싶은 비동기 함수 앞에 입력
  await Future.delayed(const Duration(seconds: 2), () {
    print('결과 ${a + b}입니다');
  });

  print('끝');
}

await를 건 함수가 끝난 뒤에 끝을 호출하는 함수가 실행돼서 원하는 대로 순서대로 출력되는 걸 볼 수 있습니다.

 

 

void main() {
  asyncTest(5, 7);
  asyncTest(3, 1);
}

위는 asyncTest 메서드 자체에 비동기 처리를 안 해서 위 결과처럼 출력이 됩니다 

원하는 대로 출력하기 위해선 위에서 비동기 처리를 해주듯 asyncTest에도 await로 비동기 처리를 해줍니다

 

void main() async{
  await asyncTest(5, 7);
  await asyncTest(3, 1);
}

위 결과처럼 await가 걸려서 첫 번째 asyncTest 가 실행되고 끝나면 두 번째 asyncTest가 실행됩니다!

728x90

'FLUTTER' 카테고리의 다른 글

flutter - go_router 정보랑 같이 보내기  (1) 2023.12.05
flutter - go_router 사용해서 라우팅하기  (0) 2023.12.05
flutter - 오버라이드  (1) 2023.12.05
flutter - Null Safety  (0) 2023.12.05
flutter - dart문법 상속  (0) 2023.11.30
Comments