티스토리 뷰
async, await
해당 문법은 Promise 를 보다 간결하게 사용하기 위한 문법으로 ES8 기준 언어 입니다.
async
async 는 함수 앞에 붙고 async function 의 함수들은 Promise 를 반환합니다. (Promise 가 붙지 않아도 자동으로 Promise 로 감싸져 반환됩니다.)
await
async 가 붙은 함수 안에서 사용하고, 비동기로 처리되는 함수 앞에 await 함수를 붙여 사용합니다.
await 가 끝나면 해당 값만을 받아 사용할 수 있음으로, Prmoise 의 지옥콜백을 어느정도 벗어날 수 있다.
예시
아래는 Promise 형식으로 된 예제입니다.
function promise (v) {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(v), 30);
});
}
function First(){
return promise("First");
}
function Second(){
return promise("Second");
}
function getString(){
First()
.then((a) => {
console.log(a);
Second()
.then((b) => {
console.log(b);
})
})
}
getString(); // First, Second 라는 값 유출
확인해보시면, 프라미스 => 콜백 => 프라미스 호출 => 콜백 이런 식으로 점점 코드 구조가 깊어지는 현상을 볼 수 있습니다.
이 부분을 async, await 를 활용해서 변경해봅시다.
function promise (v) {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(v), 30);
});
}
async function First(){
return await promise("First");
}
async function Second(){
return await promise("Second");
}
async function getString(){
const f = await First();
const s = await Second();
console.log(f, s);
}
getString();
이렇게 await 를 썼더니 위의 Promise 사용법에서 많이 코드가 최적화 된 것을 확인할 수 있다.
'개발.. > Javascript' 카테고리의 다른 글
자바스크립트를 이용해 base64 를 엑셀로 다운로드 기능 구현 (0) | 2023.09.15 |
---|---|
Promise.all 이란? (0) | 2023.05.08 |
로컬스토리지, 세션스토리지 (0) | 2022.05.16 |
console.log 스타일 적용하기 (0) | 2022.03.23 |
동적으로 클래스 조회, 추가, 삭제 하기 (0) | 2022.03.16 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- seo
- Vite
- nextjs14
- vue router
- NUXT
- AWS
- svelte
- 서버 to 서버
- cors
- Github Actions
- 네이버 서치 어드바이저
- dockerfile
- NextJS
- 스벨트
- React
- webpack
- vue composition api
- docker
- 깃허브
- openAI
- 오블완
- nuxt2
- nextjs13
- 티스토리챌린지
- nodejs
- 타입스크립트
- vscode
- Embedding
- Git
- Storybook
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함