동기(sync)
- 차례대로 실행
- 하나의 작업이 끝나야 다른 작업 실행된다.
비동기(async)
- 동시 실행
- 즉, 하나의 작업이 끝나지 않더라도 기다리지 않고 다음 작업 처리
- 비동기를 처리하기 위한 키워드: Future, async, await
- async 키워드를 함수 앞에 붙이면 비동기 함수를 정의할 수 있고, await 키워드는 비동기 함수 안에서만 사용 가능하다.
- await를 사용하면 비동기 함수가 끝날 때 까지 기다리며, await를 사용하지 않으면 다음 코드가 실행될 때까지 기다리지 않고 즉시 실행된다.
(ex. trouble shooting: 다이얼로그 실행 후 페이지 전환이 이루어져야 하는데, 다이얼로그에 await을 붙이지 않으면 다이얼로그가 표시되기 전에 다음 코드가 실행되버렸다.)
- 비동기 함수에서 에러처리는 try-catch 문을 사용한다.
- 동기(Synchronous): 요청과 응답이 동일한 흐름에서 이루어지며, 요청이 완료될 때까지 다음 작업을 기다린다.
- 비동기(Asynchronous): 요청과 응답이 별개의 흐름에서 이루어지며, 요청이 완료될 때까지 기다리지 않고 다음 작업을 수행한다.
비동기 프로그래밍은 왜 필요할까?
가장 큰 이유는 외부 DB에 CRUD 하는데 있다.
외부에서 데이터를 조작하는 동안 메인에서는 다른 작업을 할 수 있다.
데이터를 가져오는 동안 (네트워크 호출이나 파일 시스템 접근) 은 시간이 오래 걸릴 수 있기 때문에 다음 작업을 기다리기 보다는 비동기적으로 처리해서 다른 작업을 계속할 수 있으니 성능이 향상된다.
또한 예외가 발생하는 지점을 어떻게 처리할건지 적절하게 처리하면 안전성도 높일 수 있다. 만약 비동기 작업이 성공적으로 끝나지 않을 경우에 대한 예외처리를 할 수 있다.