티스토리 뷰
async await는 비동기 프로그래밍을 동기 프로그래밍처럼 작성할 수 있도록 함수에 추가된 기능입니다. 프로미스가 자바스크립트 표준이 된 이후에 등장한 새로운 표준인데, 프로미스를 대체하는 개념이라기 보다는 보완하는 개념입니다. async await 함수가 프로미스를 반환하기 때문입니다.
async 함수 선언의 기본 형태는 다음과 같습니다.
1
2
3
4
5
6
7
|
// async 함수는 프로미스를 반환합니다
async function getData(){
return "Javascript make me angry";
}
// 따라서 then 메소드 호출이 가능합니다
getData().then(data => console.log(data))
|
async 함수에는 await 식이 포함될 수 있습니다. 이 식은 async 함수의 실행을 일시 중지하고 전달된 프로미스의 처리를 기다린 다음 async 함수의 실행을 다시 시작하고 완료 후 값을 반환합니다. await 키워드는 async 함수에서만 유효합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
function requestData(value){
return new Promise(resolve =>
setTimeout(() => {
console.log("requestData : ", value);
resolve(value);
}, 500)
)
}
async function getData(){
const data1 = await requestData(10);
const data2 = await requestData(20);
return [data1, data2];
}
getData();
|
1
2
|
requestData : 10
requestData : 20
|
await의 오른편에 위치한 함수는 결국 프로미스(반환될)입니다. 프로미스가 처리됨 상태(이행 또는 거부) 상태가 될 때까지 기다렸다가 비동기 동작이 처리되면 순차적으로 코드를 실행합니다.
'IT > React' 카테고리의 다른 글
리액트 앱 라우팅 기능 추가하기 | 리액트 라우터 | react-router-dom (0) | 2020.09.22 |
---|---|
리액트 + axios = API 사용하기 (0) | 2020.09.18 |
최신 자바스크립트 | 프로미스(promise) (0) | 2020.09.18 |
리액트 컴포넌트의 생명주기 메소드 | constructor, render 외 (0) | 2020.09.16 |
리액트 클래스 컴포넌트 | state (0) | 2020.09.16 |
댓글
공지사항