[Flutter] 동기, 비동기

Angela Jeong·2024년 5월 6일

동기(sync)

  • 차례대로 실행
  • 하나의 작업이 끝나야 다른 작업 실행된다.

비동기(async)

  • 동시 실행
  • 즉, 하나의 작업이 끝나지 않더라도 기다리지 않고 다음 작업 처리
  • 비동기를 처리하기 위한 키워드: Future, async, await
  • async 키워드를 함수 앞에 붙이면 비동기 함수를 정의할 수 있고, await 키워드는 비동기 함수 안에서만 사용 가능하다.
  • await를 사용하면 비동기 함수가 끝날 때 까지 기다리며, await를 사용하지 않으면 다음 코드가 실행될 때까지 기다리지 않고 즉시 실행된다.
    (ex. trouble shooting: 다이얼로그 실행 후 페이지 전환이 이루어져야 하는데, 다이얼로그에 await을 붙이지 않으면 다이얼로그가 표시되기 전에 다음 코드가 실행되버렸다.)
  • 비동기 함수에서 에러처리는 try-catch 문을 사용한다.
  • 동기(Synchronous): 요청과 응답이 동일한 흐름에서 이루어지며, 요청이 완료될 때까지 다음 작업을 기다린다.
  • 비동기(Asynchronous): 요청과 응답이 별개의 흐름에서 이루어지며, 요청이 완료될 때까지 기다리지 않고 다음 작업을 수행한다.

비동기 프로그래밍은 왜 필요할까?

가장 큰 이유는 외부 DB에 CRUD 하는데 있다.
외부에서 데이터를 조작하는 동안 메인에서는 다른 작업을 할 수 있다.
데이터를 가져오는 동안 (네트워크 호출이나 파일 시스템 접근) 은 시간이 오래 걸릴 수 있기 때문에 다음 작업을 기다리기 보다는 비동기적으로 처리해서 다른 작업을 계속할 수 있으니 성능이 향상된다.

또한 예외가 발생하는 지점을 어떻게 처리할건지 적절하게 처리하면 안전성도 높일 수 있다. 만약 비동기 작업이 성공적으로 끝나지 않을 경우에 대한 예외처리를 할 수 있다.

0개의 댓글