1. async
- ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฝ๋๋ฅผ ๋น๋๊ธฐ์ ์ฒ๋ฆฌํ์ง ์์ผ๋ฉด, js ์์ง์ ๋๊ธฐ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ๊ทธ ๋ค๋ก ์น ํ์ด์ง์ UI๋ฅผ ํ์ํ๋ ์ฝ๋๊ฐ ์๋ค๋ฉด, ์ฌ์ฉ์๋ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฝ๋๊ฐ ๋ค ์ํ๋ ๋๊น์ง ๋น ํ์ด์ง๋ง์ ๋ณด๊ฒ ๋๋ค.
- ๋น๋๊ธฐ์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
- async ํค์๋: ์ฝ๋๋ธ๋ญ์ด ์๋์ผ๋ก Promise๋ก ๋ณํ๋๋ค.
// clear style of using promise :)
async function fetchUser() {
// do network request in 10 secs...
return 'ellie';
}
const user = fetchUser();
user.then(console.log);
console.log(user);
2. await
- await์ async๊ฐ ๋ถ์ ํจ์ ์์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- await์ delay๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ค๋ค.
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(1000);
return '๐';
}
async function getBanana() {
await delay(1000);
return '๐';
}
async function pickFruits() {
const apple = await getApple();
const banana = await getBanana();
return `${apple} + ${banana}`;
}
pickFruits().then(console.log);
3. await ๋ณ๋ ฌ ์ฒ๋ฆฌ with Promise APIs
- ์์ ์ฝ๋๋ getApple() ์คํ ํ getBanana()๊ฐ ์คํ๋๊ฒ ๋๋ค.
- all(): Promise๋ฐฐ์ด์ ์ ๋ฌํ๊ฒ ๋๋ฉด, ๋ชจ๋ Promise๋ค์ด ๋ณ๋ ฌ์ ์ผ๋ก ๋ค ๋ฐ์๋๊น์ง ๋ชจ์์ค๋ค.
- race(): ๋ฐฐ์ด์ ์ ๋ฌ๋ Promise์ค์์ ๊ฐ์ฅ ๋จผ์ ๊ฐ์ returnํ๋ ๊ฒ๋ง ์ ๋ฌํ๋ค.
function pickAllFruits() {
return Promise.all([getApple(), getBanana()])
.then(fruits => fruits.join(' + '));
}
pickAllFruits().then(console.log);
function pickOnlyOne() {
return Promise.race([getApple(), getBanana()]);
}
pickOnlyOne().then(console.log);
์ฐธ๊ณ
youtube ๋๋ฆผ์ฝ๋ฉ by ์๋ฆฌ
https://www.youtube.com/watch?v=aoQSOZfz3vQ&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=13
'language > javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด 1. ๋ณ์ | primitive ํ์ ๊ณผ object์ ์ฐจ์ด์ (0) | 2021.12.02 |
---|---|
์๋ฐ์คํฌ๋ฆฝํธ ํจ์ ๊ธฐ๋ณธํธ (0) | 2021.12.02 |
Promise ๊ฐ๋ ๋ถํฐ ํ์ฉ๊น์ง (0) | 2021.11.30 |
๋น๋๊ธฐ ์ฒ๋ฆฌ์ ์์, ์ฝ๋ฐฑ ์ดํดํ๊ธฐ (0) | 2021.11.30 |
JSON ๊ฐ๋ ์ ๋ฆฌ (0) | 2021.11.26 |