nodejs에서 모든 API는 3가지 형태로 제공이 되어진다.

  1. 그냥 이름 그대로 제공되면 비동기로 동작

    *rename(..., callback(error));*

  2. 이름에 Sync가 붙어서 제공되면 동기로 동작

    *renameSync(...);*

  3. promises를 사용하여 보다 깔끔하게 비동기 로직 처리

    *promises.rename().then().catch()*

rename

해당 경로의 파일을 선언된 경로로 이동 시키고 선언된 이름으로 바꾼다.

새롭게 이동한 폴더에 중복된 파일이 존재하면 덮어서 작성된다.

(2) 동기적으로 수행 (가급적 사용 지양)

const fs = require('fs');

try {
  fs.renameSync('./text.txt', './text-new.txt');
  console.log('Done!')
} catch (error) {
  console.error(error);
}

(1) 비동기적으로 수행

const fs = require('fs');

fs.rename('./text-new.txt', './text.txt', (error) => {
  // error : 에러가 있으면 error Object, 없으면 null
  console.error(error);
});

(3) 비동기적으로 수행

const fs = require('fs');

fs.promises.rename('./text2.txt', './text-new2.txt')
  .then(() => console.log('Done!'))
  .catch(console.error);

비동기 callback 함수와 promise 함수의 차이

엄밀히 말하면 콜백함수는 태스크 큐에 프로미스 함수는 마이크로 태스크 큐에 각각 다른 큐에 들어 가게 됩니다.