[네트워크] 동기 / 비동기

김나우·2023년 2월 4일
0

네트워크

목록 보기
4/5

동기(Synchronous) / 비동기(Asynchronous)


동기

서버에서 요청을 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있다.

즉 A라는 작업이 모두 진행될 때 까지 B 작업은 대기해야 한다.

말 그대로 동시에 일어난다는 뜻, 요청과 그 결과가 동시에 일어난다는 약속

바로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 함.

비동기

동기 방식과 반대로 요청을 보냈을 때 응답 상태와 상관없이 다음 동작을 수행할 수 있다.

A작업이 시작하면 동시에 B작업이 실행된다. A작업은 결과값이 나오는 대로 출력 된다.

동시에 일어나지 않는다를 의미, 요청과 결과가 동시에 일어나지 않을거라는 약속

각각의 장단점

동기 방식설계가 매우 간단하고 직관적이지만, 결과가 주어질 때 까지 아무것도 못하고 대기해야 하는 단점이 있다.

비동기 방식동기보다 복잡하지만 결가가 주어지는데 시간이 걸리더라도 그 시간동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.

동기적 처리(Synchronous)

console.log('1');
console.log('2');
console.log('3');

---
'1'
'2'
'3'

위와 같은 코드를 작성하고 실행해 보면 예상되는 결과는 1, 2, 3 일 것이다.

위와 같이 코드가 위에서 부터 아래로 내려오면서 하나가 끝나면 다음 코드가 실행되는 방식

동기적 처리(Synchronous)라고 한다

비동기적 처리(Asynchronous)

console.log('1');
setTimeout(() => {
  console.log('2');
}, 0)
console.log('3');  

---
'1'
'3'
'2'

이 코드의 결과는 1, 3, 2 가 출력 되었다.

이유는 setTimeout()메소드가 비동기적 API이기 때문이다.

위 코드의 실행 과정은
1. 첫 번째 줄에서 console.log('1')을 만나고 콘솔에 1 출력
2. 두 번째 줄에서 setTimeout() 메소드를 만나서 해당 메소드가 비동기적 메소드이기 때문에 이를 처리하는 다른 프로그램에 맡김.
3. 다음번째 줄에 있는 console.log('3')을 만나 콘솔에 3 출력
4. setTimeout() 메소드를 처리하는 프로그램은 비동기적 API를 제외한 모든 코드가 실행된 이후 콘솔에 결과 출력

결론

비동기적 코드의 실행 결과는 동기적 코드가 전부 실행되고 나서 값을 반환한다.

profile
안녕하세요

0개의 댓글

관련 채용 정보