future, async await에 대하여 알아보자

SInuuu·2023년 3월 26일
1

javascript에서 비동기를 처리하기 위해서 async/await, promise를 사용하듯 flutter의 dart에서도 비동기를 처리하는 기능들이 제공되고 있다.

비동기란?
특정 로직의 실행이 끝날때까지 기다려주지 않고 나머지 코드를 먼저 실행하는것을 비동기 처리라고 한다.
비동기처리가 필요한 이유는 화면에서 서버로 데이터를 요청했을때 서버가 언제 그 요청에대한 응답을 줄지 모르는데 마냥 기다릴순 없기 때문이다

dart에서는 이러한 비동기를 처리하기 위헤 future, async/await기능이 제공 되고 있다.

javascript를 경험해본 사람들은 async/await은 익숙할 것이라 생각한다. dart에서도 비슷하게 작동한다. await은 async 함수의 내부에서만 사용가능하며 await이 있을시 해당기능이 완료될때까지 진행되지 않는다.

future는 해당 기능을 일단 진행하되 나중에 비동기 부분의 함수가 처리 완료되면 결과가 return 될것이라고 알려주는 기능이다. 일단 빈 그릇을 만들어두고 비동기 결과가 처리되면 채워지는 느낌으로 생각하면 될거같다.

flutter 공식문서에 나온 예시이다.

Future<int> asyncValue = Future(foo);  // Result of foo() as a future.
asyncValue.then((int value) {
  return bar(value);
}).catchError((e) {
  return 499;
});

async/await : await 을 만나면 해당 동작이 처리 될때까지 기다리며 진행되지않는다.
future : 일단 비워둔채로 진행하되 향후 비동기가 처리될시 결과가 리턴될것이라고 알려주는 역할

참고

https://bangu4.tistory.com/328
https://api.flutter.dev/flutter/dart-async/Future-class.html

글을 작성하면서 future에대해 어떤느낌인지는 알 것같은데 아직 많이 부족하다는 생각이 들었다. 더 공부해야겠다.

profile
플린이의 좌충우돌 flutter 개발기

0개의 댓글