프로미스를 좀 더 쉽게 사용할 수 있는 문법
async
async function f() {
return 1
}
function
앞에 async
를 붙임await
async function f() {
let result = await promise
}
async
와 반드시 함께 쓰이며 아닌 경우 문법 에러 발생promise
가 처리될 때까지 기다리고 결과를 반환promise
의 내부 속성인 result
를 메서드 then
을 통해서 다룰 필요가 없어짐 => 프로미스 체이닝을 줄일 수 있음async function f() {
await Promise.reject(new Error("에러 발생!"));
}
async function f() {
throw new Error("에러 발생!");
}
function usePromise() {
new Promise((resolve, reject) => {
setTimeout(() => resolve(1), 1000)
})
.then(result => {
alert(result)
return new Promise((resolve, reject) => {
setTimeout(() => resolve(result * 2), 1000)
})
})
.then(result => { // 첫 번째 체인닝
alert(result)
return new Promise((resolve, reject) => {
setTimeout(() => resolve(result * 2), 1000)
})
})
.then(alert) // 두 번째 체이닝
}
async function asyncAwait() {
let result = await new Promise((resolve, reject) => {
setTimeout(() => resolve(1), 1000)
})
alert(result)
result = await new Promise((resolve, reject) => {
setTimeout(() => resolve(result * 2), 1000)
})
alert(result)
result = await new Promise((resolve, reject) => {
setTimeout(() => resolve(result * 2), 1000)
})
alert(result)
}