더북(TheBook)

3.6.1 동기 메서드와 비동기 메서드

setTimeout 같은 타이머와 process.nextTick 외에도, 노드는 대부분의 메서드를 비동기 방식으로 처리합니다. 하지만 몇몇 메서드는 동기 방식으로도 사용할 수 있습니다. 특히 fs 모듈이 그러한 메서드를 많이 갖고 있습니다. 어떤 메서드가 동기 또는 비동기 방식으로 동작하고 언제 어떤 메서드를 사용해야 하는지를 알아보겠습니다.

파일 하나를 여러 번 읽어보겠습니다.

readme2.txt

저를 여러 번 읽어보세요.

async.js

const fs = require('fs');

console.log('시작');
fs.readFile('./readme2.txt', (err, data) => {
  if (err) {
    throw err;
  }
  console.log('1번', data.toString());
});
fs.readFile('./readme2.txt', (err, data) => {
  if (err) {
    throw err;
  }
  console.log('2번', data.toString());
});
fs.readFile('./readme2.txt', (err, data) => {
  if (err) {
    throw err;
  }
  console.log('3번', data.toString());
});
console.log('끝');

같은 파일을 세 번 읽었습니다. 실행하기 전에 콘솔 결과를 예측해보세요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.