동기 / 비동기
- 동기 실행
- Synchronous, 시간을 맞춤
- 서버 컴퓨터의 작업이 끝날 때까지 기다린 후 다음 작업을 실행하는 통신이다.
console.log('1')
console.log('2')
- 비동기 실행
- Asynchronous, 시간을 맞추지 않음.
- 서버 컴퓨터의 작업이 끝날 때까지 기다리지 않는 통신으로, 서버에 요청이 저장될때까지 기다리지 않고 다른 작업을 진행한다
setTimeout(() => {
console.log('1')
}, 1000)
console.log('2')
NodeJS 에서 비동기로 주로 사용한다.
- DB에서 date 읽고, 저장하고, 지울 때 등 대부분의 요청은 비동기로 이루어진다.
대부분의 작업이 어느 정도 시간을 요하기 때문
- 이 덕분에 여러 개의 작업을 해도 다른 작업을 기다리지 않고 빠르게 여러 작업을 처리 할 수 있다.
JS는 동기 언어이다.
- JS는 한 줄씩 실행하고 또 다음 줄 실행하는 동기 언어이다.
- 그러나 콜백 함수를 실행하는 비동기 코드를 자주 사용했다. 어떻게 된걸까?
setTimeout(() => {
console.log('1')
}, 1000)
console.log('2')
- setTimeout은 JS의 부분이 아니다.
- 브라우저에서 사용하면 브라우저 api를 사용하는것이고 (window, object)
node에서 사용하면 Node api를 사용하는것이다.(global object)