티스토리 뷰

반응형

 

우선 코드와 같은 경로에 hello.txt 파일을 아무 내용이나 넣어서 생성.

const fs = require("fs");

function readFile(filename, encoding) {
  fs.readFile(filename, encoding, (err, data) => {
  });
}

 

위와 같은 코드가 있을때 다음 코드와 같이 비동기 버전으로 사용하려고 하는 경우

readFile("./hello.txt", "utf-8")
    .then()

 

readFile 함수를 Promise로 만들어 주어야 한다. 

 

두가지 방법이 있다.

 

const fs = require("fs");

function readFile(filename, encoding) {
  return new Promise((resolve, reject) => {
    fs.readFile(filename, encoding, (err, data) => {
      if (err) return reject(err);
      resolve(data);
    });
  });
}
readFile("./hello.txt", "utf-8").then(
  data => console.log("Read", data),
  err => console.error("File", err)
);

위 코드처럼 Promise로 직접 만들 수 있고.

 

const fs = require("fs");
const util = require("util");

const readFile = util.promisify(fs.readFile);

readFile("./hello.txt", "utf-8").then(
  data => console.log("Read", data),
  err => console.error("File", err)
);

위 코드처럼 util 라이브러리를 사용하여 만들 수 도 있다.

 

'Javascript > 비동기 프로그래밍' 카테고리의 다른 글

[Javascript] Promise #3 promise.all, promise.race  (0) 2020.04.09
[Javascript] Promise #2  (0) 2020.04.08
[Javascript] Promise #1  (0) 2020.04.07
[Javascript] callback 활용방법  (0) 2020.04.07