async/await 그리고 동기 비동기

이원호·2023년 12월 13일
0

async/await는 Promise를 기반으로 한 비동기 코드를 보다 간결하고 가독성 있게 작성할 수 있게 해줍니다. 이러한 기능들은 JavaScript에서 네트워크 요청, 파일 처리, 시간이 소요되는 작업 등을 다룰 때 매우 유용합니다.

동기 비동기 란 ?

동기(Synchronous)와 비동기(Asynchronous)는 프로그래밍, 특히 자바스크립트에서 매우 중요한 개념입니다. 이들은 작업의 실행 방식과 완료 처리 방법에서 차이가 있습니다.

동기(Synchronous)

동기 방식에서는 작업들이 순차적으로 실행됩니다. 한 작업이 완료되기 전까지 다음 작업은 대기하게 됩니다. 이는 코드의 실행 순서가 작성 순서와 일치한다는 것을 의미합니다.

  • 특징:
    • 예측 용이: 작업의 순서가 명확하기 때문에 프로그램의 흐름을 예측하기 쉽습니다.
    • 대기 시간: 한 작업이 긴 시간을 소요할 경우, 다음 작업은 그만큼 대기해야 합니다.
  • 예시:
    • 데이터베이스에서 데이터를 조회한 후 그 결과를 가지고 다음 작업을 수행하는 경우, 결과가 반환될 때까지 다음 코드의 실행이 멈춥니다.

비동기(Asynchronous)

비동기 방식에서는 한 작업이 완료되는 것을 기다리지 않고, 다음 작업을 실행합니다. 비동기 작업은 주로 네트워크 요청, 파일 시스템 작업, 타이머 등에서 사용됩니다.

  • 특징:
    • 비차단: 한 작업이 완료될 때까지 기다리지 않기 때문에, 시스템이 차단되지 않고 다른 작업을 계속 처리할 수 있습니다.
    • 콜백(Callback) 사용: 비동기 작업의 완료 후 실행할 작업은 보통 콜백 함수를 통해 처리됩니다.
    • Promise 및 Async/Await: 자바스크립트에서는 Promise 객체와 async/await 구문을 통해 비동기 작업을 보다 쉽게 처리할 수 있습니다.
  • 예시:
    • 웹 애플리케이션에서 서버에 데이터를 요청하고, 서버의 응답을 기다리는 동안 다른 UI 작업을 수행할 수 있습니다.

동기 vs 비동기

  • 동기 방식은 간단하고 직관적이지만, 긴 작업 시간으로 인해 애플리케이션의 반응성이 떨어질 수 있습니다.
  • 비동기 방식은 반응성이 뛰어나고 효율적이지만, 작업의 흐름이 복잡해지고, 콜백 지옥(callback hell)과 같은 문제를 일으킬 수 있습니다.

결론

동기와 비동기는 각각의 장단점을 가지고 있으며, 애플리케이션의 요구사항과 상황에 따라 적절히 선택하여 사용해야 합니다. 자바스크립트와 같은 비동기 프로그래밍이 중요한 언어에서는, 이러한 개념의 이해가 특히 중요합니다.

profile
정진하는개발자

0개의 댓글