async
와 await
는 자바스크립트의 비동기 처리 패턴 중 가장 최근에 나온 문법이다.
기존의 비동기 처리방식인 콜백함수와 프로미스의 단점을 보완한 문법이다.😃
코드
async function logName() {
let user = await fetchUser('domain.com/users/1');
if (user.id === 1) {
console.log(user.name);
}
}
async & await 기본 문법
async function 함수명() {
await 비동기_처리_메서드_명();
}
- 함수의 앞에
async
라는 예약어를 붙인다. - 함수의 내부 로직 중 HTTP 통신을 하는 비동기 처리 코드앞에
await
를 붙인다.- 이때, 비동기 처리 메서드가 꼭 프로미스 객체를 반환해야 await가 의도한 대로 동작한다.
- 일반적으로
await
의 대상이 되는 비동기처리 코드는Axios
등 프로미스를 반환하는 API 호출 함수이다.
예시
function fetchItems() {
return new Promise(function(resolve, reject) {
let items = [1,2,3];
resolve(items)
});
}
async function logItems() {
let resultItems = await fetchItems();
console.log(resultItems); // [1,2,3]
}
먼저, fetchItems()
함수는 프로미스 객체를 반환한다. 프로미스가 이행(resolved)되며 items가 반환된다.logItems()
함수는 async
, await
문법을 사용한 비동기처리이다.
만약 이둘을 사용하지 않았다면 콜백함수
나 .then()
등을 사용해서 비동기에 대한 사고를 했어야 한다.
async & await 예외 처리
async & await
문법에서 예외처리하는 방법은 try catch
이다.
프로미스에서 에러처리를 위해 .catch()
를 사용했던 것처럼async & await
에서는 catch {}
를 사용하면 된다.
async function logItems() {
try{
let resultItems = await fetchItems();
console.log(resultItems); // [1,2,3]
} catch(error) {
console.log(error);
}
}
참고: 캡틴판교
'개인공부 > TIL(Today I Learned)' 카테고리의 다른 글
TIL 58일차_ 클라이언트와 서버 (0) | 2021.03.17 |
---|---|
TIL 57일차_Promise.all (0) | 2021.03.16 |
TIL 54일차_비동기처리2: Promise (0) | 2021.03.13 |
TIL 53일차_비동기처리1: 콜백함수 (0) | 2021.03.12 |
TIL 52일차_알고리즘: 탐욕알고리즘과 동적계획법 (0) | 2021.03.11 |