[새싹X코딩온] 웹 개발자 부트캠프 영등포 5기에 추가 합격하게 되어 5주차부터 합류하게 되었습니다.
기회가 된다면, 합류 이전의 내용들도 복습해보기로 하며,,,
특정 코드의 연산이 끝날 때까지 코드 실행이 멈추지 않고 다음 코드를 먼저 실행하는 JS의 특성
function goMart() {
console.log('마트에 가서 어떤 음료를 살지 고민한다.');
}
function pickDrink() {
setTimeout(()=>{
console.log('고민 끝!!');
product = '제로 콜라';
price = 2000;
}, 3000);
}
function pay(product, price){
console.log(`상품명: ${product}, 가격: ${price}`);
}
let product;
let price;
goMart();
pickDrink();
pay(product, price);
// 마트에 가서 어떤 음료를 살지 고민한다.
// 상품명: undefined, 가격: undefined
// 고민 끝!!
파라미터로 대입되는 함수. 즉, 다른 함수가 실행을 끝낸 뒤 실행되는 함수
function goMart() {
console.log('마트에 가서 어떤 음료를 살지 고민한다.');
}
// 콜백 함수
function pickDrink(callback) {
setTimeout(()=>{
console.log('고민 끝!!');
product = '제로 콜라';
price = 2000;
// 콜백 함수
callback(proudct, price);
}, 3000);
}
function pay(product, price){
console.log(`상품명: ${product}, 가격: ${price}`);
}
let product;
let price;
goMart();
pickDrink(pay);
// 마트에 가서 어떤 음료를 살지 고민한다.
// 고민 끝!!
// 상품명: 제로 콜라, 가격: 2000
비동기를 처리할 수 있는 객체
function goMart() {
console.log('마트에 가서 어떤 음료를 살지 고민한다.');
}
function pickDrink() {
return new Promise(function (resolve, reject) {
setTimeout(() => {
console.log('고민 끝!!');
proudct = '제로 콜라';
price = 2000;
resolve();
}, 3000);
});
}
let product;
let price;
goMart();
pickDrink().then(()=>{
console.log(`상품명: ${product}, 가격: ${price}`);
});
// 마트에 가서 어떤 음료를 살지 고민한다.
// 고민 끝!!
// 상품명: 제로 콜라, 가격: 2000
function add(n1,n2) {
return new Promise(function (resolve, reject) {
setTimeout(() => {
let result = n1 + n2;
resolve(result);
}, 1000);
});
}
function mul(n) {
return new Promise(function (resolve, reject) {
setTimeout(() => {
let result = n * 2;
resolve(result);
}, 700);
});
}
function sub(n1,n2) {
return new Promise(function (resolve, reject) {
setTimeout(() => {
let result = n - 1;
// resolve(result);
reject(new Error('의도적으로 에러를 일으킴!'));
}, 500);
});
}
add(4,3)
.then((result) => {
console.log('1: ', result);
return mul(result);
})
.then((result) => {
console.log('2: ', result);
return sub(result);
})
.then((result) => {
console.log('3: ', result);
})
.catch((err) => {
console.log('실패!');
console.log(err);
});
// 1: 7
// 2: 14
// 실패!
// Error: 의도적으로 에러를 일으킴!
function goMart() {
console.log('마트에 가서 어떤 음료를 살지 고민한다.');
}
function pickDrink() {
return new Promise(function (resolve, reject) {
setTimeout(() => {
console.log('고민 끝!!');
proudct = '제로 콜라';
price = 2000;
resolve();
}, 3000);
});
}
function pay(){
console.log(`상품명: ${product}, 가격: ${price}`);
}
async function exec() {
goMart();
await pickDrink();
pay();
}
exec();
// 마트에 가서 어떤 음료를 살지 고민한다.
// 고민 끝!!
// 상품명: 제로 콜라, 가격: 2000