
코드스테이츠 과제 코드를 공부 목적으로 변형 해서 정리 하였습니다.
🍀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 |