생각/javascript

동기 비동기

kyunghoonk00k 2023. 6. 16. 09:59
반응형

비동기(asynchronous)와 동기(synchronous)는 프로그래밍에서 두 가지 다른 코드 실행 유형을 나타냅니다. 이 두 용어의 차이점은 작업의 처리 방식과 실행 순서에 있습니다.

  1. 동기(synchronous) 작업:
  • 동기 작업은 코드가 순차적으로 실행됩니다. 한 작업이 완료되면 다음 작업이 실행됩니다.
  • 앞선 작업이 완료되어야만 해당 결과를 이용하여 뒤따르는 작업을 실행할 수 있습니다.
  • 동기 처리는 코드의 실행 순서를 쉽게 추적할 수 있지만, 긴 작업 시간이 예상되는 실행이 차단되어 애플리케이션 성능에 영향을 줄 수 있습니다.
  • 예시: 파일 읽기와 쓰기, 순차적인 연
javascript
// 동기 작업 예시
const result = doSomething();
const anotherResult = doSomethingElse(result);
console.log(anotherResult);
  1. 비동기(asynchronous) 작업:
  • 비동기 작업은 코드가 동시에 실행됩니다. 한 작업의 완료를 기다리지 않고 다음 작업이 실행됩니다.
  • 작업이 완되면 콜백 함수, 프로미스, async/await 등을 사용하여 이후 작업을 처리합니다.
  • 비동기 처리는 긴 작업 시간에도 애플리케이션을 차단되지 않게 하여 성능을 향상시킬 수 있지만, 코드의 실행 순서 추적이 어렵고 구현이 복잡할 수 있습니다.
  • 예시: API 요청, 타이머 함수, 이벤 리스너
javascript
// 비동기 작업 예시 (프로미스 사용)
doSomethingAsync()
  .then((result) => doSomethingElseAsync(result))
  .then((anotherResult) => console.log(anotherResult));
javascript
// 비동기 작업 예시 (async/await 사용)
async function executeAsyncTask() {
  const result = await doSomethingAsync();
  const anotherResult = await doSomethingElseAsync(result);
  console.log(anotherResult);
}
executeAsyncTask();

결론적으로, 동기와 비동기 작업은 코드의 실행 순서와 처리 방식에 따라 구분되며, 상황에 따라 적절 방식을 선택하여 사용하면 성능과 가독성을 최적화할 수 있습니다.

 

API 요청을 비동기로 처리하는 주요 이유는 사용자 경험과 애플리케이션 성능을 개선하기 위함입니다. API 요청은 인터넷 연결 속도, 서버 처리 시간 등 다양한 요소로 인해 실행 시간이 일정하지 않고 느릴 수 있습니다. 이 때 동기적으로 처리하게 되면, 요청에 대한 응답이 도착할 때까지 모든 작업이 중지되어 사용자 경험이 저하되거나 애플리케이션 성능이 떨어질 수 있습니다. 

비동기 API 요청의 장점:

  1. 사용자 경험 개선: API 요청 도중에도 다른 태스크를 처리하거나, 인터페이스를 제어할 수 있어 사용자 경험이 개선됩니다.
  2. 애플리케이션 성능 향상: 각각의 API 요청이 독립적으로 실행되므로, 여러 요청이 동시에 처리될 수 있습니다. 이를 통해 애플리케이션의 처리 속도를 향상시킬 수 있습니다.
  3. 코드 유지 관리 용이: 비동기 처리를 사용하면, 코드 작성과 유지 관리가 보다 효과적이고 깔끔해질 수 있습니다. 서로 다른 비동기 작업은 독립적으로 수행되므로, 코드의 구조를 효율적으로 구성할 수 있습니다.

비동기 API 요청을 사용하는 방법 중 콜백 패턴, 프로미스, async/await 방식이 있으며, 이들을 적절하게 활용하여 사용자 경험과 애플리케이션 성능을 개선할 수 있습니다

반응형

'생각 > javascript' 카테고리의 다른 글

Chart.js  (0) 2023.06.23
Jest  (0) 2023.06.16
JS면접 준비 / 채워 가기  (0) 2022.12.10
배열과 유사배열  (0) 2022.09.30
혼공스 고급 예외 처리  (0) 2022.09.25