Callback 으로 비동기 구현해볼것.
"파일을 읽고나서 callback이 실행되어야 합니다"
"에러가 발생할 경우, callback 첫번째 인자에 에러 객체가 전달되어야 합니다."
"callback 두번째 인자에 파일 내용이 전달 되어야 합니다."
맨 처음 URclass를 보고나서 ,
fs.readFile('test.txt', 'utf8', (err, data) => {
if (err) {
throw err; // 에러를 던집니다.
}
console.log(data);
});
이렇게 접근할 생각을 하였다. 그러니까 아래와 같다.
const getDataFromFile = function (filePath, callback){
fs. readFile(filePath, 'utf8', callback => {
callback(err,data)
if(err){
return 'EONENT'; // 에러를 던집니다.
}else if (!data) {
return null
}
console.log(data);
});
이렇게 접근을 하였고, 여기에서 막혔다 . 사실 테스트케이스 대로, 접근을 했다는 편이 정확하다.
"파일을 읽고 나서 callback이 실행되어야 합니다"
그래서 callback(err,data)를 넣었다.
"에러가 발생할 경우, callback 첫번째 인자에 에러 객체가 전달되어야 합니다"
그래서 첫번째 인자로 err을 넣은것이다.
"callback 두번째 인자에 파일 내용이 전달되어야 합니다"
마찬가지
하지만 테스트는 '콜백함수 실행' 부분에서만 통과하고 나머지는 통과하질 못하였다.
const getDataFromFile = function (filePath, callback) {
fs.readFile(filePath, 'utf8', (err,data) => {
if (err) {
callback(err,null) // 에러를 던집니다.
} else{
callback(null,data)
}
});
}
위와 같다. callback의 파라메터에 'null'을 넣고 각각 그 부분만 동작하게끔 만들었다. 생각외로 매우 간단했다.