본문 바로가기
기술 개발/Javascript

동기(Synchronous)와 비동기(Asynchronous)

by 쪼짱 2023. 4. 16.
728x90
반응형
SMALL

동기 vs 비동기

동기(Synchronous)와 비동기(Asynchronous)는 프로그래밍에서 매우 중요한 개념이다.

 

동기(Synchronous)

동기(Synchronous)

동기는 호출하는 함수가 반환하기 전에 작업이 완료될 때까지 기다리는 것을 의미한다. 즉, 호출한 함수는 결과가 반환될 때까지 블로킹(blocking)되며, 결과가 반환된 후에야 다음 코드를 실행할 수 있다.

이러한 특성 때문에, 동기 방식은 순차적인 처리를 보장하고, 코드가 간단하고 직관적이다. 하지만, 작업이 끝날 때까지 대기해야 하기 때문에, 시간이 오래 걸리는 작업을 수행할 때는 성능 이슈가 발생할 수 있다.

function func1(){
  console.log('func1');
  func2();
}
function func2(){
  console.log('func2');
  func3();
}
function func3(){
  console.log('func3');
}
func1();

 

 

비동기(Asynchronous)

비동기(Asynchronous)

비동기는 호출하는 함수가 작업을 완료하지 않은 상태에서 다음 코드를 실행할 수 있는 것을 의미한다.

이러한 특성 때문에, 비동기 방식은 블로킹되지 않고, 비동기 작업의 결과는 콜백 함수를 통해 반환된다.

이러한 특성으로 인해, 비동기 방식은 대규모 요청을 처리하거나 시간이 오래 걸리는 작업을 수행할 때 성능 이슈를 해결할 수 있다. 하지만, 코드가 복잡해지며, 오류 처리가 어렵다.

function func1(){
  console.log('func1');
  func2();
}
function func2(){
  setTimeout(function(){
      console.log('func2');
  },0);
  func3();
}
function func3(){
  console.log('func3');
}

func1();

 

동기와 비동기의 차이점 정리

구분  동기  비동기
호출 방식 호출한 함수가 반환될 때까지 대기 호출한 함수의 반환을 기다리지 않고 다음 코드를 실행
실행 흐름 단일 실행 흐름 병렬 실행 흐름
반환 값 호출한 함수가 반환될 때 반환 값 사용 가능 호출한 함수의 반환 값 사용 불가능
오류 처리 호출한 함수에서 발생한 오류를 즉시 처리 호출한 함수에서 발생한 오류를 나중에 처리

 


출처

https://dahye-jeong.gitbook.io/javascript/javascript/2019-01-23-async

https://dev-coco.tistory.com/46

https://im-developer.tistory.com/228

 

 

728x90
반응형
LIST