async & await
์๋ฐ์คํฌ๋ฆฝํธ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ํจํด์ผ๋ก, ๊ธฐ์กด์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ธ ์ฝ๋ฐฑ ํจ์์ Promise์ ๋จ์ ์ ๋ณด์ํ๋ ํค์๋๋ผ๊ณ ํ๋ค. (์์ง Promise๋ ์ ๋ชจ๋ฅด๋๋ฐ..^^)
async function ํจ์๋ช
(){
await ๋น๋๊ธฐ์ฒ๋ฆฌ๋ฉ์๋๋ช
();
}
async
async ํค์๋๋ฅผ ๋ถ์ฌ์ค ํจ์์ return ๊ฐ์ ๋น๋๊ธฐ ๊ฐ์ฒด์ธ Promise์ resolve ๊ฐ์ด ๋๋ค.
์ฆ, Promise์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ์ ์ป๋๋ค.
async function helloAsync(){
return new Promise(function(resolve, reject){
var s = "Hello, Async!";
resolve(s)
});
}
async function logSentence(){
var say = await helloAsync();
console.log(say);
}
logSentence(); // "Hello, Async!"
async๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด Promise์ ๊ฒฐ๊ณผ๊ฐ์ returnํ๋ฏ๋ก then๋ ์ฌ์ฉํ ์ ์๋ค.
async function helloAsync() {
return "Hello, Async!";
}
helloAsync().then((res)=> {
console.log(res);
}); // Hello, Async!
await
await ํค์๋๋ฅผ ๋น๋๊ธฐํจ์์ ํธ์ถ ์์ ๋ถ์ด๊ฒ ๋๋ฉด, ๋น๋๊ธฐํจ์๊ฐ ๋ง์น ๋๊ธฐ์ ์ธ ํจ์์ฒ๋ผ ์๋ํ๊ฒ ๋๋ค.
์ฆ, await ํค์๋๊ฐ ๋ถ์ ํจ์์ ํธ์ถ์ ๋ค์ ์๋ ์ฝ๋๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ทธ ์๋์ ์๋ ์ฝ๋๋ฅผ ์ํํ์ง ์๊ฒ ๋๋ค.
function delay(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
return resolve();
}, ms);
});
}
async function helloAsync() {
await delay(3000); // ๋๊ธฐ์ ์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ 3์ด ํ์ hello async ์ถ๋ ฅ๋จ
return "hello async";
}
helloAsync().then((res) => {
console.log(res);
});
async function main() {
const res = await helloAsync(); // await์ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ์ฒ๋ฆฌ ํจ์์ return ๊ฐ๋ ๋ฐ์์ฌ ์ O
console.log(res);
}
main();
'๐ฆ Computer Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] var๋ฅผ ์ง์ํด์ผํ๋ ์ด์ (0) | 2022.03.13 |
---|---|
[JavaScript] Promise | ์ฝ๋ฐฑ์ง์ฅ์ ํ์ถํ๋ ๋ฐฉ๋ฒ (0) | 2022.03.11 |
[JavaScript] ๋๊ธฐ & ๋น๋๊ธฐ (0) | 2022.03.04 |
[JavaScript] spread | ์ ๊ฐ ์ฐ์ฐ์ (0) | 2022.03.03 |
[JavaScript] ๋น๊ตฌ์กฐํ ํ ๋น ๊ทธ๋ฆฌ๊ณ SWAP (0) | 2022.03.03 |