1. 동기와 비동기

동기 (Synchronous)
console.log("1번");
console.log("2번");
console.log("3번");
/* 출력 결과 */
// 1번
// 2번
// 3번
- 모든 작업이 우리가 코딩한 순서대로, 순차적으로 진행돼요.
- 우리가 자연스럽게 떠올릴 수 있는 프로그래밍 순서라고 이해하면 돼요.
비동기 (Asynchronous)
console.log("1번");
//delay(2번째 arg) 시간 후에 callback 함수(1번째 arg)가 실행되는 함수
setTimeout(() => {
console.log("2번");
}, 1000);
console.log("3번");
/* 출력 결과 */
// 1번
// 3번
// 2번
- 작업이 순차적으로 진행되지 않고, 병렬적으로 진행돼요.
- 즉, 어떤 작업이 먼저 끝날 지 예측할 수가 없어요.
자바스크립트와 비동기
- 자바스크립트는 싱글 스레드(Single-thread) 언어에요.
- 싱글 스레드는 한 번에 하나의 작업만 처리할 수 있어요.
- 처음 자바스크립트가 개발될 때, 개발자들은 이렇게 자바스크립트의 역할이 커질 줄 몰랐어요. 그래서 싱글 스레드만으로도 충분할 거라고 생각했다고 합니다. 🤣
- 스레드를 일꾼이라고 생각해 보세요. 그럼 자바스크립트에는 일꾼이 1명밖에 없는 셈입니다.
- 유저가 요청한 100개의 일이 쌓여있을 때, 혼자 다 감당하려면 어떻게 될까요?
- 현재는 자바스크립트의 역할이 매우 다양해지고 중요해졌어요.
- 따라서 싱글 스레드만으로는 한계가 생겼어요.
- 이를 해결하기 위해서 **“비동기”**가 등장한 것이랍니다!
만약, 자바스크립트에 비동기가 없었다면?