동기와 비동기

설명

동기

여러작업을 진행 할때 하나의 작업이 끝날때 까지 기다렸다가 다음 작업을 진행하는 것.

비동기

여러작업을 진행 할때 하나의 작업을 실행하고 다음 작업으로 넘어간다. 이전에 실행한 작업은 작업이 끝나고 callback을 넘긴다.

비유

간단하게 설명하면 동기는 카페에서 손님에게 주문을 받고 커피를 만들어서 전달하고 다음 손님으로 넘어가는 것 이고 비동기는 카페에서 손님에게 주문을 받고 진동벨을 준 다음 다음 손님의 주문으로 넘어가고, 손님의 커피가 제조가 완료되면 진동벨(callback)을 울려 해당 손님에게 전달한다.

코드

동기 코드

1
2
3
4
5
6
7
8
9
console.log('1');
const data = fs.readFileSync('/file.md');
console.log(data);
console.log('2');


// 1 
// data..
// 2

비동기 코드

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
console.log('1');
fs.readFile('/file.md', (err, data) => {
  if (err) throw err;
  console.log(data);
  console.log('2');
});
console.log('3');

// 1
// 3
// data..
// 2

동기 코드는 우리가 생각하는 순서대로 결과가 나온다. 비동기 코드는 우리의 생각과 다르게 fs.readFile를 처리하는 동안 다음으로 넘어가서 3이 출력되고 함수가 다 처리되면 callback함수의 처리가 이루어진다.

참고

node

Built with Hugo
Theme Stack designed by Jimmy