async
와await
은 JavaScript에서 비동기 작업을 간편하게 처리하기 위해 ES2017 (ES8)에 도입된 문법.- 이 두 키워드를 사용하면 비동기 코드를 동기 코드처럼 읽고, 쓰며, 생각할 수 있음
- async 키워드는 함수 앞에 위치.
- 이를 사용하여 선언된 함수는 항상 프로미스(Promise)를 반환.
- 만약 함수가 명시적으로 프로미스를 반환하지 않더라도, JavaScript 런타임은 함수에서 반환된 값을 자동으로 프로미스로 감싸 반환.
async function fetchUserData() {
return { username: "Alice", age: 25 };
}
- await 키워드는 오직 async 함수 내부에서만 유효.
- await은 프로미스가 처리될 때까지 함수의 실행을 일시 중지하고, 프로미스가 이행(resolve)되면 함수 실행을 재개.
- 프로미스가 거부(reject)될 경우, 예외를 발생시켜 try...catch 블록으로 제어를 넘길 수 있음.
async function displayUserData() {
const userData = await fetchUserData();
}
async/await을 사용할 때 에러 처리는 try...catch문을 통해 가능
async function displayUserData() {
try {
const userData = await fetchUserData();
console.log(userData);
} catch (error) {
console.error("An error occurred:", error);
}
}