async await 는 자바스크립 비동기 처리 문법 중 하나입니다.
콜백함수나 프로미스 보다도 간결하게 사용될 수 있다는 점에서 유용하게 사용할 수 있습니다.
async 는 await를 무조건 필요로 하며 최근에 async를 쓰지 않아도 await를 사용할 수 있다고는 하나 아직 모든 부분에 적용되지는 않는 것 같습니다.
함수 앞에 async를 붙이며 비동기 처리를 해야하는 코드 앞에 await를 붙입니다.
비동기 처리 메소드가 꼭 Promise를 반환하는 것에만 await를 사용할 수 있습니다.
일반적으로 axios 같은 Promise를 반환하는 API 호출 함수에 await를 많이 사용합니다.
저도 이번에 기업협업에서 하는 프로젝트에서 axios로 API를 호출하는 함수에서 async await을 많이 사용했습니다.
const getPostData = async () => {
const newPostData = await getPost(pageNum.toString());
setPostData([...postData, ...newPostData.slice(offset, offset + LIMIT)]);
setOffset(offset + LIMIT);
};
게시글 데이터를 가져오는 함수로 함수앞에 async를 적고
비동기 처리를 할 함수에 await를 붙입니다.
newPostData 를 먼저 거친 후에 그 다음 함수들이 처리됩니다.
async와 await의 예외 처리하는 방법으로는
try catch 를 사용할 수 있습니다.
Promise에서 예외 처리를 위해 catch를 사용했듯이 비슷한 방법으로 사용됩니다.
async function getLoginSuccess() {
try {
const user = await fetchUser();
if (user) {
const list = await fetchList();
console.log(list.items);
}
} catch(error) {
console.log(error)
}
}
콘솔에 에러를 찍어봄으로써 에러를 파악할 수 있다.
'javascript' 카테고리의 다른 글
TIL no.61 - 03 전송계층 (0) | 2021.04.11 |
---|---|
TIL no.58 - this 왜 헷갈릴까? : JavaScript (1) | 2021.03.23 |
TIL no.38 - Promise 란 무엇인가 ? 개념 정리와 이해 (0) | 2020.11.23 |
TIL no.19 - Scope가 무엇인가요? (0) | 2020.10.03 |
TIL no. 11 - todo 만들면서 JavaScript 모르는 것들 정리 (0) | 2020.08.30 |