Part II - fs module # 1

이건우·2021년 4월 26일
0

Asynchronous & Promise

목록 보기
6/13

문제

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'을 넣고 각각 그 부분만 동작하게끔 만들었다. 생각외로 매우 간단했다.

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글