์ค๋์ ์ฌ๋ฌ๊ฐ์ง๋ก ๋งํ๋ ํ๋ฃจ๋ผ ๊ทธ๋ฅ ๊ฐ๋จํ๊ฒ ๊ฐ๋ ์ ๋ฆฌ๋ง..!

1.async
์๋ฅผ ๋ค๋ฉด ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์๋์์ ๋ฐ์์ค๋๋ฐ 10์ด์ ๋ ๊ฑธ๋ฆฌ๋ ์ฝ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์
function fetchUser( ) {
//do network request in 10 secs...
return 'mememe'
}
const user = fetchUer();
console.log(user)
์๋ฐ์คํฌ๋ฆฝํธ์์ง์ ๋๊ธฐ์ ์ผ๋ก ์ํํ๊ธฐ ๋๋ฌธ์ .. ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฝ๋๋ฅผ ๋น๋๊ธฐ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ ํ ํ์ง ์์ผ๋ฉด ์ฝ๋๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๋์ ์ฌ์ฉ์๋ 10์ด์ ๋ ๋นํ๋ฉด์ ๋ณด๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ๋น๋๊ธฐ์ ์ผ๋ก ๋ง๋ค๊น?
๋จผ์ , promise ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
function fetchUser( ) {
//do network request in 10 secs...
return new Promise((resolve,reject)=>{
resolve('ellie');
});
}
const user = fetchUer();
user.then(console.log)
console.log(user)
์ข๋ ๊ฐํธํ๊ฒ ๋ง๋ค๊ธฐ..
async function fetchUser( ) {
//do network request in 10 secs...
return 'mememe'
}
const user = fetchUer();
user.then(console.log)
console.log(user)
async ๋ผ๋ ํค์๋๋ฅผ ํจ์์์ ์ฐ๋ฉด ์ฝ๋๋ธ๋ก์ด ์๋์ผ๋ก promise๋ก ๋ฐ๋๋ค.
2.await
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
async function getApple() {
await delay(1000);
return 'apple';
}
async function getApple() {
await delay(1000);
return 'banana';
}
function pickFruits() {
return getApple().then(apple => {
return getBanana().then(banana => `${apple}+${banana}`);
});
}
pickFruits().then(console.log);
ํ์ง๋ง! ์ด ์ฝ๋์ ๋ฌธ์ ์ ์ ๋๋ฌด ์ฒด์ด๋ํ๊ณ ์์ด ์ฝ๋ฐฑ์ง์ฅ์ ๋ฌธ์ ๋ฅผ ์ผ์ผ์ผ ๋ฌธ์ ๊ฐ ๋๋ค.
๋ค์ ์ฝ๋๋ฅผ ๊ณ ์ณ๋ณด์โฆ!
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
async function getApple() {
await delay(1000);
return 'apple';
}
async function getApple() {
await delay(1000);
return 'banana';
}
async function pickFruits() {
try {
const apple= await getApple();
const banana= await getBanana();
} catch() {
..........
}
return `${apple}+${banana}`;
}
pickFruits().then(console.log);