Skip to Content
Suffering builds character

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