8. Async & Await
Promise를 통해 콜백 지옥은 어느 정도 개선되었지만, Promise 본질적으로는 콜백 패턴을 사용하기 때문에 비동기 작업이 복잡해짐에 따라 then()을 이용한 체이닝이 길어질 경우 Promise 코드 역시 가독성이 떨어질 수 있음
app.js
getPost(1) // <- 원하는 postId
.then(getUser) // post → user
.then(printUser) // user 출력
// ... 더 추가될 수 있는 비동기 작업
.catch(console.error);async & await는 ES8 이후 도입된 키워드로, 별도의 후속처리 핸들러(then()) 없이 비동기 작업을 처리하는 코드를 마치 동기적인 방식처럼 작성하여 가독성을 높일 수 있음
예외는 try-catch를 활용하여 예외 발생 시 각 코드라인에서 캐치할 수 있음
app.js
async function findUser() {
try {
const post = await getPost(1); // /posts/1
const user = await getUser(post); // /users/:userId
printUser(user);
} catch (err) {
console.error('실패:', err.message);
}
}
console.log('findUser 호출 전');
findUser(); // findUser는 비동기 함수로 동작
console.log('findUser 호출 후');실행 결과
terminal
findUser 호출 전
findUser 호출 후
User: {id: 1, name: '김하늘', email: 'haneul.kim@example.com'}Last updated on