함수 앞에
async
키워드를 붙이면 그 함수는 Promise를 반환한다.
명시적으로 Promise를 반환하지 않아도, resolved promise로 값을 감싸 이행된 promise가 반환된다.
async function f() {
return 1;
}
f().then(alert); // 1
promise가 이행될 때까지 실행이 잠시 중단되게 만든다.
async function f() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("완료!"), 1000)
});
let result = await promise; // 프라미스가 이행될 때까지 기다림 (*)
alert(result); // "완료!"
}
f();
일반 함수에서는 await를 쓸 수 없다. 꼭 async 함수 안에서만 사용해야한다.