async function f() {
return 1
}
function 앞에 async
를 붙이면 해당 함수는 프라미스를 항상 반환함\
let value = await promise;
자바스크립트는 await를 만나면 프라미스가 처리될 때까지 기다림, 결과는 그 이후에 반환
// 최상위 레벨 코드에선 문법 에러가 발생함
let response = await fetch('/article/promise-chaining/user.json');
let user = await response.json();
익명 async 함수로 코드를 감싸면 최상위 레벨에서도 await를 사용할 수 있음
(async () => {
let response = await fetch('/article/promise-chaining/user.json');
let user = await response.json();
...
})();
프라미스가 정상적으로 동작하면 await promise는 프라미스 객체의 result에 저장된 값을 반환함
프라미스가 거부되면 throw문을 작성한 것처럼 에러가 던져짐
async function f() {
await Promise.reject(new Error("에러 발생!"));
}
=== // 동일
async function f() {
throw new Error("에러 발생!");
}