async
•
async는 function 앞에 위치
•
해당 함수는 항상 프라미스를 반환
•
프라미스가 아닌 값을 반환하더라도 이행 상태의 프라미스(resolved promise)로 값을 감싸 이행된 프라미스가 반환되도록 한다.
async function f() {
return 1;
// === return Promise.resolve(1); (명시적 프라미스 반환)
}
f().then(alert); // 1
JavaScript
복사
await
•
await는 async 함수 안에서만 동작
•
프라미스가 처리될 때까지 함수 실행 대기
•
프라미스가 처리되면 그 결과와 함께 실행 재개
•
await > promise.then
async function f() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("완료!"), 1000)
});
let result = await promise; // 프라미스가 이행될 때까지 기다림 (*)
alert(result); // "완료!"
}
f();
JavaScript
복사