728x90
- 'part-2/02_promiseConstructor.js' ํ์ผ์ ๊ตฌํํ๊ณ , ํ ์คํธ๋ฅผ ํต๊ณผํฉ๋๋ค. callback์ด๋ผ๋ ๋งค๊ฐ๋ณ์(parameter) ๋์ , Promise์ resolve, reject ํจ์๋ฅผ ์ด์ฉํ์ธ์.
- part-2/03_basicChaining.js์, ์์ ์์ฑํ getDataFromFilePromise๋ฅผ ์ด์ฉํด์ ํ์ด์ผ ํฉ๋๋ค.
- fs ๋ชจ๋์ ์ง์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋๋ค.
- getDataFromFilePromise๋ฅผ ์ด์ฉํด, 'files/user1.json' ํ์ผ๊ณผ 'files/user2.json' ํ์ผ์ ๋ถ๋ฌ์ค๊ณ , ๋ ํ์ผ์ ํฉ์ณ์ ์ต์ข
์ ์ผ๋ก ๋ ๊ฐ์ฒด๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ์ด ๋ชฉํ์
๋๋ค.
- ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ๋, user1Path ๋ฐ user2Path๋ฅผ ์ด์ฉํ์ธ์.
- then์ด ์ด๋ค ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌ๋ฐ๋์ง์ ๋ํ ์ดํด๊ฐ ์์ด์ผ ํฉ๋๋ค.
- then์ ๋ฆฌํด์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ดํดํ๊ณ ์์ด์ผ ํฉ๋๋ค.
- ํ์ผ ์ฝ๊ธฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌธ์์ด์ด๋ฏ๋ก, JSON.parse๋ฅผ ์ฌ์ฉํด์ผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
PromiseConstructor.js
const fs = require("fs");
const getDataFromFilePromise = filePath => {
// return new Promise()
// TODO: Promise ๋ฐ fs.readFile์ ์ด์ฉํด ์์ฑํฉ๋๋ค.
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf-8', (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
};
getDataFromFilePromise('README.md').then(data => console.log(data));
module.exports = {
getDataFromFilePromise
};
BasicChaining.js
const path = require('path');
const { getDataFromFilePromise } = require('./02_promiseConstructor');
const user1Path = path.join(__dirname, 'files/user1.json');
const user2Path = path.join(__dirname, 'files/user2.json');
// HINT: getDataFromFilePromise(user1Path) ๋ฐ getDataFromFilePromise(user2Path)๋ฅผ ์ด์ฉํด ์์ฑํฉ๋๋ค
const readAllUsersChaining = () => {
// TODO: ์ฌ๋ฌ๊ฐ์ Promise๋ฅผ then์ผ๋ก ์ฐ๊ฒฐํ์ฌ ์์ฑํฉ๋๋ค
// user1path ์ user2path ๊ฐ ๋ชจ๋ ๋ด๊ธด ์ด๋ค ๋ฐฐ์ด์ ๋ง๋ค๊ณ ์ถ์๋ฐ
// then ์ฌ์ฉํด๊ฐ์ง๊ณ ๋ง๋ ๋ค.
// ๊ทผ๋ฐ fs ์ง์ ์ฌ์ฉํ์ง๋ง๊ณ . ์์ getdata~ import ํ ๊ฑฐ ์ฌ์ฉํด์ ๋ง๋ค์ด์ค๋ผ.
let result = []; // userpath ๋ด์์ค ๊ทธ๋ฆ ๋ง๋ค๊ธฐ
return getDataFromFilePromise(user1Path)
.then((value)=>{
let parse1 = JSON.parse(value);
result.push(parse1);
return getDataFromFilePromise(user2Path)
})
.then((value)=>{
let parse2 = JSON.parse(value);
result.push(parse2);
return result;
})
}
readAllUsersChaining();
module.exports = {
readAllUsersChaining
}
728x90