LeeWang_31
이왕31
LeeWang_31
전체 방문자
오늘
어제
  • 분류 전체보기 (234)
    • 프로젝트 (2)
      • 사이드 프로젝트 (2)
      • Codestates_pre_project (0)
    • 프론트엔드 (169)
      • Html (19)
      • CSS (18)
      • JavaScript (29)
      • Codestates (76)
      • 코딩노트 (27)
    • 백엔드 (10)
      • node (10)
    • 구르는 돌 🌑 (16)
      • Codestates (11)
      • 생각 (4)
      • 공부 흔적 (1)
    • 정보 (18)
      • 오류노트 (2)
      • 인텔리제이 정보 (9)
      • 깃 정보 (3)
      • 기타 정보 (4)
      • 안드로이드스튜디오 정보 (0)
    • CS (7)
      • 이론공부 (7)
    • App (6)
      • Android (3)
      • Kotlin (3)
    • 컴퓨터 수학 (5)
      • 암호론 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • DP
  • 알고리즘
  • css
  • codestate
  • TODOlist
  • 사용자 친화 웹
  • 코드스테이츠
  • JavaScript
  • 1292
  • 파이어베이스연동
  • 생활코딩
  • 웹팩
  • 2609
  • 자바스크립트
  • React
  • 사이드프로젝트
  • 번들링
  • linuix 코드스테이츠
  • 코플릿
  • ubuntu
  • UI/UX
  • 안드로이드스튜디오범블비
  • 안드로이드스튜디오파이어베이스
  • html
  • linux
  • 백준
  • figjam
  • 코딩애플
  • 사용자친화웹
  • 2693

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
LeeWang_31

이왕31

[코드스테이츠 과제] Node.js모듈 - fs모듈
프론트엔드/코딩노트

[코드스테이츠 과제] Node.js모듈 - fs모듈

2022. 9. 27. 14:20

코드스테이츠 과제 코드를 공부 목적으로 변형 해서 정리 하였습니다.

🍀01_callback


조건

  • 파일을 일고 나서 callback이 실행 되어야 합니다
  • 에러가 발생하는 경우, callback 첫번째 인자에  에러객체가 전달되어야 합니다
  • callback 두번쨰 인자에 파일 내용이 전달되어야 합니다.
  • 파일의 경로는 filePath, callback함수명은 callback으로 쓴다.
const 01_callback = function (filePath, callback){
    fs.readFile(filePath, "utf8", function (err, data)  {
        if(err){
            callback(err, null)	//에러를 받아오면 function의 err에 err를 data에 null을 준다
        }else{
            callback(null, data) //정상 실행되면 function의 err에 null을 data에 data를 준다
        }
    }
}

 

🍀02_promiseConstructor


조건

  • promise형태로 리턴되어야합니다
  • then 블록을 통하여 파일 내용이 전달 되어야 합니다
  • 에러가 발생할 경우, catch 블록을 통하여 에러 객체가 전달 되어야합니다.
  • 파일 경로는 filePath로 사용한다
const 02_promiseConstructor = filePath => {
   return new Promise((resolve, reject) =>{	//Promise를 리턴합니다
     fs.readFile(filePath, "utf8", function (err, data)  {
       if(err){
         reject(err) 	//reject의 err는 catch에서 받게 된다
       }else{
         resolve(data)	//resolve의 data는 then에서 받게된다
       }
     })
   })
};

 

🍀03_basicChaining


조건

  • 체이닝 결과가 Promise 형태로 반환되어야 합니다
  • user1.json의 경로를 갖는 user1Path와 user2.json의 경로를 갖는 user2Parth가 있습니다.
  • user1.json의 내용과 user2.json 내용을 합쳐 배열로 리턴되어야 합니다.
  • 02_promiseConstructor함수를 두번 사용합니다.
const 03_basicChaining = () => {
    return 02_promiseConstructor(user1Path)
        .then(user1 =>{	//user1.json의 내용을 user1에서 받습니다
            return 02_promiseConstructor(user2Path).then(user2 =>{	
            //user2.json의 내용을 user2에서 받습니다
                return JSON.parse(`[${user1},${user2}]`);
        })
}

JSON.parse() 메소드

  • JSON.parse() 메소드는 JSON.stringify() 메소드와는 반대로 인수로 전달받은 문자열을 자바스크립트 객체로 변환하여 반환합니다.

 

🍀04_promiseAll


  • 위 내용을 promiseAll을 통해 해결합니다.
const 04_promiseAll = () => {
    return Promise.all([
        02_promiseConstructor(user1Path),
        02_promiseConstructor(user2Path)
    ])
        .then(([user1, user2]) => {
        	//user1.json의 내용을 user1에서 받습니다
            //user2.json의 내용을 user2에서 받습니다
            //받은 문자열을 자바스크립트 객체형식으로 변환합니다.
            return JSON.parse(`[${user1},${user2}]`);
        })
}

 

🍀05_asyncAwait


  • 위 내용을 async/await으로 해결합니다.
const readAllUsersAsyncAwait = async () => {
    // TODO: async/await 키워드를 이용해 작성합니다
    const user1 = await 02_promiseConstructor(user1Path)
    const user2 = await 02_promiseConstructor(user2Path)
    const text = JSON.parse(`[${user1},${user2}]`) ;
    return text
}
저작자표시 (새창열림)

'프론트엔드 > 코딩노트' 카테고리의 다른 글

[코플릿] 다차원 배열 평평하게  (0) 2022.10.20
[코드스테이츠 과제] fetch API  (0) 2022.09.27
[코드스테이츠 과제] 비동기 - 타이머 API  (0) 2022.09.27
[코플릿] DailyCoding - 짝수 인덱스는 키, 홀수 인덱스는 값인 객체  (1) 2022.09.23
[코플릿] 객체 - 다른 객체들의 속성 가져오기  (1) 2022.09.23
    '프론트엔드/코딩노트' 카테고리의 다른 글
    • [코플릿] 다차원 배열 평평하게
    • [코드스테이츠 과제] fetch API
    • [코드스테이츠 과제] 비동기 - 타이머 API
    • [코플릿] DailyCoding - 짝수 인덱스는 키, 홀수 인덱스는 값인 객체
    LeeWang_31
    LeeWang_31
    이왕 할 거면 기분 좋게

    티스토리툴바