동기
(Synchronous : 동시에 일어나는)
- 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야한다.
- 동기방식은 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다.
'1st'
'2st'
'3st'
**이처럼 코드가 위에서부터 아래로 내려오면서 하나가 끝나면 다음 코드가 실행되는 방식을 동기적 처리라고 한다.
**
비동기
(Synchronous : 동시에 일어나는)
- 요청과 결과가 동시에 일어나지 않는다.
- 비동기방식은 동기보다 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.
console.log('1st');
setTimeout(()=>{
console.log('2nd');
},0)
console.log('3rd');
(결과)
'1st'
null
'3rd'
'2nd'
- 첫번째 줄에서 '1st'를 출력
- 두번째 줄에서 비동기적 메소드인 setTimeout()때문에 이를 처리하는 다른 프로그램에 맡긴다
- 곧바로 '3rd'를 찍는다
- setTimeout() 메소드를 처리하는 프로그램은 비동기적 API를 제외한 모든 코드가 실행된 이후 결과를 콘솔에 찍는다.
비동기적 코드의 실행결과는 동기적 코드가 전부 실행되고나서 값을 반환한다.