nodejs에서 모든 API는 3가지 형태로 제공이 되어진다.
그냥 이름 그대로 제공되면 비동기로 동작
*rename(..., callback(error));*
이름에 Sync가 붙어서 제공되면 동기로 동작
*renameSync(...);*
promises를 사용하여 보다 깔끔하게 비동기 로직 처리
*promises.rename().then().catch()*
해당 경로의 파일을 선언된 경로로 이동 시키고 선언된 이름으로 바꾼다.
새롭게 이동한 폴더에 중복된 파일이 존재하면 덮어서 작성된다.
(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 함수의 차이
엄밀히 말하면 콜백함수
는 태스크 큐에 프로미스 함수
는 마이크로 태스크 큐에 각각 다른 큐에 들어 가게 됩니다.