async
와await
는 함수 앞에 위치하여promise
를 쉽게 이용할 수 있게 해주는 문법이다.
👉 function 앞에 async
를 붙이면 해당 함수는 항상 promise
를 반환한다.
아래 예시의 함수를 호출하면 1을 리턴하는 promise가 반환된다.
async function a() {
return 1;
}
a().then(alert); // 1
👉 await
은 async
함수 안에서만 동작하며 원하는 promise
함수에 await
을 붙이면 promise
가 이행될 때 까지 기다린다.
아래 코드에서 result
는 promise
함수가 처리될 때까지 기다린 후, alert창을 띄운다.
💡 함수 실행을 기다리는 동안에 CPU가 다른 일을 작업할 수 있기 때문에 리소스 낭비가 적다.
async function b() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("성공"), 1000)
});
let result = await promise;
// promise가 처리될 때까지 함수 실행을 기다린다.
alert(result); // "성공"
}
b();