Effective Dart - Asynchrony in usage

MJ·2023년 6월 11일
0

Dart Basic

목록 보기
11/12

Future을 async/await와 같이 사용하는 것을 지향한다

  • 비동기 코드는 future와 같은 추상화를 사용하더라도 읽고 디버깅하기 쉽지않다 -> async/await를 사용하면 문법의 가독성 향상과 비동기 코드에서 Dart의 모든 흐릅 제어문을 사용할 수 있다
Future<int> countActivePlayers(String teamName) async {
  try {
    var team = await downloadTeam(teamName);
    if (team == null) return 0;

    var players = await team.roster;
    return players.where((player) => player.isActive).length;
  } catch (e) {
    log.error(e);
    return 0;
  }
}

필요가 없다면 async를 사용하지 않는다

  • 메소드의 동작을 변경하지 않고 async를 생략할 수 있다면 사용하지 않는게 좋음
Future<int> fastestBranch(Future<int> left, Future<int> right) {
  return Future.any([left, right]);
}

async가 유용한 경우

  • await를 사용할 때
  • 에러를 비동기적으로 반환할 때, async와 throw를 함께 사용하는 것이 return Future.error(...)보다 간결함
  • 값을 반환하고 있지만 명시적으로 Future 사용을 원할 때, async는 Future.value(...) 보다 간결함
profile
느긋하게 살자!

0개의 댓글