비동기함수와 async await

no minho·2023년 10월 17일

일반적인 비동기함수 코드

void addNumbers(int number1, int number2) {
  print('$number1 + $number2 계산시작!');

  Future.delayed(Duration(seconds: 3), (){
    print('$number1 + $number2 = ${number1 + number2}');
  });

  print('$number1 + $number2 코드실행 끝');
}

1 + 1 계산시작!
1 + 1 코드실행 끝
2 + 2 계산시작!
2 + 2 코드실행 끝
1 + 1 = 2
2 + 2 = 4

async-await 코드

void main() {
  addNumbers(1, 1);
  addNumbers(2, 2);
}

Future<void> addNumbers(int number1, int number2) async {
  print('$number1 + $number2 계산시작!');

  await Future.delayed(Duration(seconds: 3), (){
    print('$number1 + $number2 = ${number1 + number2}');
  });

  print('$number1 + $number2 코드실행 끝');
}

1 + 1 계산시작!
2 + 2 계산시작!
1 + 1 = 2
1 + 1 코드실행 끝
2 + 2 = 4
2 + 2 코드실행 끝

await는 async 함수 안에만 사용할 수 있는 특별한 문법
함수 앞에 await를 붙이면, 상태가 바뀔 때까지 코드가 대기
성공 상태 또는 실패 상태로 바뀌기 전까지는 다음 연산을 시작하지 않는다.

에러 처리는 try/catch를 이용해서 해결 할 수있다. 콜백함수를 이용하지 않아서 가독성이 좋다

0개의 댓글