โจ Async ํจ์๋?
Promise ๋ฅผ ์กฐ๊ธ ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ ํจ์์ด๋ค. ํจ์ ์ ์ธ ์์ async
ํค์๋๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํด๋น ํจ์๋ ํญ์ Promise ๋ฅผ ๋ฐํํ๋ค. ๋ํ, return ๊ฐ์ด Promise ๊ฐ ์๋๋๋ผ๋ Resolved Promise ๋ก ํด๋น ๊ฐ์ ๊ฐ์ธ์ ๋ฐํํ๋ค.
async function Callback(){
// some code here
}
โจ Await ์ด๋?
Async ํจ์ ๋ด๋ถ์์๋ง ํธ์ถ ๊ฐ๋ฅํ ํค์๋์ด๋ค. Promise ๊ฐ ์ฒ๋ฆฌ๋ ๋๊น์ง ํจ์ ์คํ์ ๊ธฐ๋ค๋ฆฐ ํ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ก ํ๋ค.
ํ๋ผ๋ฏธ์ค๊ฐ ์ฒ๋ฆฌ๋๊ธธ ๊ธฐ๋ค๋ฆฌ๋ ๋์์ ์์ง์ด ๋ค๋ฅธ ์ผ์ ํ ์ ์๋๋ก ํ๋ค.
async function f() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("์๋ฃ!"), 1000)
});
let result = await promise; // ํ๋ผ๋ฏธ์ค๊ฐ ์ดํ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆผ
alert(result); // "์๋ฃ!"
}
Test:
f()
console.log('first')
// ------- console -------- //
// 'first'
// undefined
// alert '์๋ฃ'
Promise ์ ๋ณธ์ง์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๋ค๋ฅธ ์์ ์ ํ๋ ๋์ web api ์์ญ์์ ์์ ์ ์ํํ๊ณ queue ์ ๊ฒฐ๊ณผ๋ฅผ ์ฎ๊ธธ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. Async ์ Await ์ ๋ณธ์ง์ ์ด๋ฌํ promise ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ์กฐ๊ธ ๋ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์๋๋ก ๋๋ ๊ฒ์ด๋ค.
์ฐธ๊ณ ์๋ฃ
'๐ป DEV > Javascript & NodeJS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ExpressJS (Intro) (0) | 2021.06.05 |
---|---|
[Javascript] Fetch API (0) | 2021.05.27 |
[Javascript] Promise (ํ๋ก๋ฏธ์ค) (0) | 2021.05.27 |
[Javascript] ๋น๋๊ธฐ, ๋๊ธฐ ํจ์ (Asynchronous, Synchronous) ๋? (0) | 2021.05.27 |
[Javascript] Class (0) | 2021.05.13 |
๋๊ธ