자바스크립트의 프로미스(Promise)는 비동기 작업을 처리하기 위해 사용되는 패턴입니다. 이러한 프로미스를 이용하여 파일 처리 작업을 보다 효율적으로 수행할 수 있습니다. 파일을 읽거나 쓰는 작업은 일반적으로 비동기적으로 처리되므로, 콜백 함수를 사용하거나 async/await와 같은 비동기 패턴을 사용하여 처리할 수 있습니다. 프로미스를 사용하면 코드를 보다 간결하게 작성할 수 있으며, 에러 처리도 간편하게 처리할 수 있습니다.
파일 읽기 예제
아래는 프로미스를 사용하여 파일을 읽어오는 예제 코드입니다.
const fs = require('fs');
function readFileAsync(filePath) {
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
// 사용 예제
readFileAsync('file.txt')
.then((data) => {
console.log(data);
})
.catch((err) => {
console.error('파일을 읽어오는 중 에러 발생:', err);
});
위 코드에서는 fs
모듈을 사용하여 파일을 읽어오는 readFileAsync
함수를 정의합니다. 이 함수는 새로운 프로미스 객체를 생성하고, 내부에서 파일을 읽어오는 비동기 작업을 수행합니다. 작업이 완료되면 resolve
함수를 호출하여 성공적으로 처리된 데이터를 전달하고, 실패한 경우 reject
함수를 호출하여 에러를 전달합니다.
readFileAsync
함수를 호출하여 파일을 읽은 후 콘솔에 데이터를 출력하고, 에러가 발생한 경우에는 해당 에러를 콘솔에 출력합니다.
파일 쓰기 예제
아래는 프로미스를 사용하여 파일에 데이터를 저장하는 예제 코드입니다.
const fs = require('fs');
function writeFileAsync(filePath, data) {
return new Promise((resolve, reject) => {
fs.writeFile(filePath, data, 'utf8', (err) => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
// 사용 예제
writeFileAsync('file.txt', 'Hello, World!')
.then(() => {
console.log('파일 쓰기 완료');
})
.catch((err) => {
console.error('파일 쓰기 중 에러 발생:', err);
});
위 코드에서는 fs
모듈을 사용하여 파일에 데이터를 저장하는 writeFileAsync
함수를 정의합니다. 이 함수도 비슷하게 프로미스 객체를 생성하고, 파일에 데이터를 저장하는 비동기 작업을 수행합니다. 작업이 완료되면 resolve
함수를 호출하고, 실패한 경우 reject
함수를 호출하여 에러를 전달합니다.
writeFileAsync
함수를 호출하여 파일에 데이터를 저장한 후 콘솔에 “파일 쓰기 완료”라는 메시지를 출력하고, 에러가 발생한 경우에는 해당 에러를 콘솔에 출력합니다.
결론
프로미스를 이용하여 파일 처리 작업을 수행하면 비동기 작업을 보다 효율적으로 처리할 수 있습니다. 코드를 간결하게 작성하고, 에러 처리도 간단하게 처리할 수 있습니다. 파일 읽기와 쓰기 예제를 통해 프로미스를 이용한 파일 처리 작업 방법을 알아보았습니다. 이를 응용하여 실제 프로젝트에서 파일 처리 작업을 수행해보시기 바랍니다.