node.js는 비동기
동기프로그래밍
- 차례로 작업이 실행되며 완료될 때까지 중단할 수 없다.
비동기 프로그래밍
임의의 순서로 또는 동시에 작업이 실행될 수 있다.
js는 node.js에서 싱글 스레드로 동작한다.
싱글 스레드로 동작한다는 것은 하나의 작업만 처리할 수 있다는 뜻.
싱글스레드로 동작하지만 콜백, 프로미스, 어싱크 아웨이트 방법을 사용하면 비동기 처리를 할 수 있다.
콜백
함수의 파라미터로 함수를 전달, 비동기 처리가 끝났을때 전달된 함수를 실행한다. 콜백은 가독성이 좋지 못하여 유지보수 및 디버깅이 힘들다
프로미스
- 콜백대신 사용할 수 있는 방법
- 비동기 작업이 완료되면 결과를 반환하는 객체이다.
- 프로미스 객체는 상태를 가지고 있으며 처음에는 대기였다가 작업이 완료되면 성공 또는 실패상태가 된다.
어싱크 어웨이트
- 프로미스를 사용하는 비동기 작업을 동기적으로 처리하는 것처럼 코드를 작성할 수 있게 해준다.
- async가 붙어 있는 함수를 실행할 때 await키워드를 사용하여 비동기 작업이 완료될 때까지 기다릴 수 있다.