728x90
오늘은 자바스크립트 async-await에 대해 알아보도록 하겠습니다.
1. 자바스크립트 async 함수
async 함수는 비동기 함수로 이벤트 루프를 통해 작동합니다.
promise를 사용하여 결과를 반환합니다.
비동기에 대해 이해가 안 가는 분들을 위해 설명을 해드리면
비동기는 쉽게 말해 프로그램의 진행이 병렬로 갈라지는 것입니다.
동기는 순서대로 하나하나 진행되지만 비동기는 중간에 2개 혹은 그이 상의 길로 갈라질 수 있습니다.
문법은 간단합니다.
function에 앞에 async가 붙으면 됩니다.
async function asyncf() {
}
2. 자바스크립트 async await
자바스크립트의 비동기 처리 패턴 중 하나로 콜백 함수와 프로미스의 단점을 보완하여 개발자가 읽기 좋은 코드를 작성할 수 있도록 돕습니다.
예제를 통해 알아보도록 하겠습니다.
function a() {
return new Promise(resolve => {
setTimeout(() => {
resolve('aaaa');
}, 2000);
});
}
async function t() {
console.log('b');
const c = a();
console.log(c);
}
t();
함수 a는 promise 객체를 시간이 2초의 시간이 지나면 return 해줍니다.
함수 t는 a의 반환 값을 c에 담아주고 이것을 출력해줍니다.
이것을 그냥 진행하면
> "b" > [object Promise]
다음과 같은 출력이 나옵니다.
비동기 함수이기 때문에 c에 함수 a의 반환 값이 입력되기 전에 c가 출력되기 때문에 aaaa가 출력되지 않는 것입니다.
function a() {
return new Promise(resolve => {
setTimeout(() => {
resolve('aaaa');
}, 2000);
});
}
async function t() {
console.log('b');
const c = await a();
console.log(c);
}
t();
> "b" > "aaaa"
다음과 같은 결과가 나옵니다.
a함수에서 aaaa를 담아 반환할 때까지 기다리기 때문에 aaaa가 출력될 수 있습니다.
setTimeout을 사용하지 않아도 같은 값이 출력됩니다.
위의 코드를 콜백 함수로 했다면
a함수가 실행되고 이후에 t가 콜백 함수로 실행되는 형태로 복잡하게 표현되었을 것입니다.
728x90
'기타 > javascript' 카테고리의 다른 글
[Javascript]split() 함수 문자열 배열로 변환 (0) | 2021.01.30 |
---|---|
자바스크립트 foreach 메서드 사용법 (0) | 2021.01.27 |
자바스크립트 날짜(Date) 객체 시간 설정하는 법 (0) | 2021.01.26 |
javascript map 객체 선언 방법과 object 객체와의 차이점 (0) | 2021.01.25 |
자바 스크립트 프레임 워크 종류 및 순위 Top5 (0) | 2021.01.22 |