// library.js
const checkAvailability = (itemName, distributorName) => {
console.log(`Checking availability of ${itemName} at ${distributorName}...`);
return new Promise((resolve, reject) => {
setTimeout(() => {
if (restockSuccess()) {
console.log(`${itemName} are in stock at ${distributorName}`)
resolve(itemName);
} else {
reject(`Error: ${itemName} is unavailable from ${distributorName} at this time.`);
}
}, 1000);
});
};
module.exports = { checkAvailability };
// This is a function that returns true 80% of the time
// We're using it to simulate a request to the distributor being successful this often
function restockSuccess() {
return (Math.random() > .2);
}
자바스크립트를 공부하면서 보는데 자바스크립트가 modules.exports 로 저장한 object 만 다른 파일에서 사용가능하다고 알고있는데 여기서 보면 restockSuccess 함수는 modules.exports 에 할당하지 않은 함수로 되어있는걸로 저는 보고 있거든요 밑에 코드가 checkAvailability 함수를 쓰려고 request(’./library.js’) 사용해서 쓴 코드 거든요? 제의문은 이렇게 다른파일에서 쓸때 checkAvailability 함수안에서 restockSuccess() 함수를 이용해서 랜덤값을 만들어서 사용할려면 이함수가 그파일에 정의되어있어야 될텐데 안된 상태인거 아닌가요? request() 를 쓴다면 library 파일안에 있는 모든함수가 일단 app.js 로 불러와진 상태 인건가요?
// app.js
const {checkAvailability} = require('./library.js');
const onFulfill = (itemsArray) => {
console.log(`Items checked: ${itemsArray}`);
console.log(`Every item was available from the distributor. Placing order now.`);
};
const onReject = (rejectionReason) => {
console.log(rejectionReason);
};
// Write your code below:
const checkSunglasses = checkAvailability('sunglasses', 'Favorite Supply Co.');
const checkPants = checkAvailability('pants', 'Favorite Supply Co.');
const checkBags = checkAvailability('bags', 'Favorite Supply Co.')
Promise.all([checkSunglasses, checkPants, checkBags]).then(onFulfill).catch(onReject);