

Promise์์ thenํ์์ chain ํ์์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๊ฐ๋ ์ฑ์ด ์ข์์ง
async function getName() {
return 'mike';
}
getName().then(name=>{
console.log(name);
});
//mike
ํจ์ ์์ async๋ฅผ ๋ฃ์ผ๋ฉด ํญ์ promise๋ฅผ ๋ฐํ
async ํจ์ ๋ด๋ถ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
await ํค์๋ ์ค๋ฅธ์ชฝ์๋ promise๊ฐ ์ค๊ณ , ๊ทธ promise ์ฐจ๋ก๊ฐ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆผ
function getName(name){
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(name);
}, 1000);
});
}
async function showName() {
const result = await getName('Mike');
console.log(result);
}
console.log('์์');
showName();
//1์ด ๋ค์ mike๊ฐ ์ฐํ
const f1= () => {
return new Promise((res, rej) => {
setTimeout(()=>{
res('1๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 1000);
});
};
const f2= (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(()=>{
res('2๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 3000);
});
};
const f3= (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(()=>{
res('3๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 2000);
});
};
console.log('์์');
f1()
.then(res => f2(res))
.then(res => f3(res))
.then(res => console.log(res));
.catch(conole.log)
.finally(()=>{
console.log('๋');
});
const f1= () => {
return new Promise((res, rej) => {
setTimeout(()=>{
res('1๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 1000);
});
};
const f2= (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(()=>{
res('2๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 3000);
});
};
const f3= (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(()=>{
res('3๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 2000);
});
};
async function order(){
const result1=await f1();
const result2=await f2(result1);
const result3=await f1(result2);
console.log(result3);
console.log('์ข
๋ฃ');
}
order();
//1๋ฒ ์ฃผ๋ฌธ ์๋ฃ 2๋ฒ ์ฃผ๋ฌธ ์๋ฃ 3๋ฒ ์ฃผ๋ฌธ ์๋ฃ ์ข
๋ฃ
๐ค 2๋ฒ์์ ์ค๋ฅ๊ฐ ๋๋ ๊ฒ์ด๋ผ๋ฉด?
โญ๏ธpromise์ catch=> async, await์ try catchโญ๏ธ
const f1= () => {
return new Promise((res, rej) => {
setTimeout(()=>{
res('1๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 1000);
});
};
const f2= (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(()=>{
rej('xxx');
}, 3000);
});
};
const f3= (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(()=>{
res('3๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 2000);
});
};
async function order(){
try{
const result1=await f1();
const result2=await f2(result1);
const result3=await f1(result2);
console.log(result3);
} catch (e) {
console.log(e);
}
console.log('์ข
๋ฃ');
}
order();
//์๋ฌ ๋ฉ์ธ์ง๋ฅผ ์ฐ๊ณ 3๋ฒ์ผ๋ก ๋์ด๊ฐ๊ฒ ๋จ
๋น๋๊ธฐ ํจ์๋ฅผ ๋ณ๋ ฌ๋ก ์ฌ์ฉํ ์ ์์
const f1= () => {
return new Promise((res, rej) => {
setTimeout(()=>{
res('1๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 1000);
});
};
const f2= (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(()=>{
res('2๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 3000);
});
};
const f3= (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(()=>{
res('3๋ฒ ์ฃผ๋ฌธ ์๋ฃ);
}, 2000);
});
};
async function order(){
try{
const result=await Promise.all([f1(), f2(), f3()]);
console.log(result);
} catch (e) {
console.log(e);
}
console.log('์ข
๋ฃ');
}
order();