Flutter에서 비동기 프로그래밍: Future, async, await 사용법과 이유

2024. 7. 4. 02:36Flutter/Flutter Programming

반응형

비동기 프로그래밍은 Flutter에서 네트워크 요청, 파일 읽기, 데이터베이스 접근 등 시간이 오래 걸리는 작업을 처리할 때 매우 중요합니다. Flutter는 이러한 작업을 효율적으로 처리하기 위해 Future, async, await 키워드를 제공합니다. 이번 블로그에서는 이 키워드들의 사용법과 사용 이유에 대해 알아보겠습니다.

비동기 프로그래밍이란?

비동기 프로그래밍은 코드의 실행을 블로킹하지 않고, 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있게 해줍니다. 이를 통해 애플리케이션의 반응성을 유지할 수 있습니다.

Future란?

Future는 비동기 작업의 결과를 나타내는 객체입니다. Future는 아직 완료되지 않은 작업을 나타내며, 작업이 완료되면 결과를 반환하거나 에러를 던집니다.

Future 사용 예시

Future<String> fetchUserOrder() {
  // 3초 후에 주문 데이터를 반환하는 가상의 비동기 함수
  return Future.delayed(Duration(seconds: 3), () => 'User Order');
}

void main() {
  fetchUserOrder().then((order) {
    print('Fetched order: $order');
  });
  print('Fetching user order...');
}

위 코드는 3초 후에 'User Order'를 반환하는 비동기 함수 fetchUserOrder를 호출합니다. then 메서드는 Future가 완료된 후 실행될 콜백 함수를 등록합니다.

async와 await

async와 await 키워드는 Future를 더 쉽게 사용할 수 있도록 도와줍니다. async 키워드는 함수가 비동기 함수임을 나타내고, await 키워드는 비동기 작업이 완료될 때까지 기다립니다.

async와 await 사용 예시

Future<String> fetchUserOrder() async {
  // 3초 후에 주문 데이터를 반환하는 가상의 비동기 함수
  await Future.delayed(Duration(seconds: 3));
  return 'User Order';
}

void main() async {
  print('Fetching user order...');
  String order = await fetchUserOrder();
  print('Fetched order: $order');
}

위 코드는 async와 await를 사용하여 비동기 함수를 호출하고 결과를 기다립니다. await 키워드는 fetchUserOrder 함수가 완료될 때까지 기다렸다가 결과를 반환합니다.

try-catch를 사용한 에러 처리

비동기 작업 중 에러가 발생할 수 있습니다. 이럴 때 try-catch를 사용하여 에러를 처리할 수 있습니다.

try-catch 사용 예시

Future<String> fetchUserOrder() async {
  // 3초 후에 주문 데이터를 반환하는 가상의 비동기 함수
  await Future.delayed(Duration(seconds: 3));
  throw Exception('Failed to fetch order');
}

void main() async {
  print('Fetching user order...');
  try {
    String order = await fetchUserOrder();
    print('Fetched order: $order');
  } catch (e) {
    print('Error: $e');
  }
}

위 코드는 fetchUserOrder 함수에서 예외가 발생할 경우, catch 블록에서 에러를 처리합니다.

비동기 프로그래밍을 사용하는 이유

  1. 반응성 유지: 비동기 프로그래밍을 사용하면 시간이 오래 걸리는 작업이 UI를 블로킹하지 않으므로 애플리케이션의 반응성을 유지할 수 있습니다.
  2. 효율적인 자원 사용: 비동기 작업을 통해 CPU와 I/O 작업을 효율적으로 분배할 수 있습니다.
  3. 코드 가독성 향상: async와 await 키워드를 사용하면 콜백 헬(callback hell) 없이 비동기 코드를 동기 코드처럼 작성할 수 있어 가독성이 향상됩니다.

결론

Flutter에서 비동기 프로그래밍은 필수적입니다. Future, async, await 키워드를 사용하면 비동기 작업을 간단하고 효율적으로 처리할 수 있습니다.

비동기 프로그래밍을 잘 활용하여 반응성이 뛰어난 Flutter 애플리케이션을 개발해 보세요.

 

 

 

 

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

나비일기장 [수발일기장] - Google Play 앱

수형자 수발가족및 수발인을 위한 일기장으로 수형생활시기에 따른 정보를 얻을 수 있습니다.

play.google.com

 

반응형