nodejs | 동기, 비동기란 무엇일까 🤔

matisse·2020년 7월 1일
1

synchronous or asynchronous

- 동기적, 비동기적의 차이

위키백과의 정의는 다음과 같다.

컴퓨터 과학에서 비동기 입출력 또는 비순차 입출력은 데이터 전송을 마치기 전에 기타 프로세스가 계속하도록 허가하는 입출력 처리의 한 형태이다. 컴퓨터에서의 입출력 기능은 데이터 처리 시 보다 상당히 느릴 수 있다 능률을 위해서는 비동기적으로 작업, 심플한 작업이라면 동기적 처리방식을 적용해도 된다.

  • 비동기적asynchronous : 동시적으로 처리 (효율적이지만 복잡하다)
  • 동기적synchronous : 순서대로 처리

이해하기 좋은 이미지가 있어 가져와보았다. 출처: 벨로퍼트와 함께하는 모던 자바스크립트

- sync

비동기적 처리를 위해서는 sync가 없는(콜백함수를 갖고 있는) 함수를 사용한다. sync는 리턴 값을 주지만, sync가 없는 함수는 리턴 값을 주지 않아 콜백이 있어야 한다.

fs.readdir(path[, options], callback) //비동기적
fs.readdirSync(path[, options]) //동기적

- callback

콜백을 그대로 해석하면 다시 전화하라는 뜻이다. 요 의미를 들여다 보면, 필요에 따라 (시간이 걸리는 것은) 나중에 처리할 수 있는 함수라는걸 알 수 있다.

아래 예시의 두 번째 함수는 익명 함수인데, 변수에 함수를 지정한 것이다. 자바스크립트에서는 함수가 값으로(인자로) 들어갈 수 있다. 마지막 줄에서 a라는 변수가 담고 있는 값인 함수를 실행하는 것이다.

function a() {
    console.log('A')
}

var a = function () {
    console.log('A')
}

a();

0개의 댓글