async란 함수앞에 붙어 promise를 반환하게 한다.
async function helloAsync() {
return "hello Async";
}
helloAsync().then((res) => {
console.log(res);
})
결과값: hello Async
function delay (ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function helloAsync() {
return delay(3000).then(() => {
return "hello Async";
});
}
helloAsync().then((res) => {
console.log(res);
})
function delay (ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function helloAsync() {
await delay(3000);
return "hello Async";
}
async function main() {
const res = await helloAsync();
console.log(res);
}
main();
async가 있는 helloAsync()에서 await를 사용하여 delay()가 끝나기 전까진 return은 실행되지 않는다.
main()또한 상수 res에 await를 붙인 함수를 만들어 주었으므로 helloAsync()의 작업이 끝나기 전까지는 console.log()가 실행되지 않는다.
-> 만약 res에 await를 붙이지 않으면 helloAsync()가 3초동안 대기하므로 res = Promise { pending } 즉, 대기상태가 된다.