
423
13.4 비동기 순회
13.3.4
마지막으로, 내부에서 일어나는 일을 이해하면
async
함수가 어떻게 동작하는지 이
해하는 데 도움이 될 것입니다.
다음과 같은
async
함수가 있다고 합시다.
async function f(x) { /*
바디
*/ }
이 함수를 원래 함수를 감싸는, 프라미스를 반환하는 함수라고 생각해 보십시오.
function f(x) {
return new Promise(function(resolve, reject) {
try {
resolve((function(x) { /*
바디
*/ })(x));
}
catch(e) {
reject(e);
}
});
}
사실 이런 식으로 문법을 변형해 보는 것만으로는
await
키워드를 설명하기 쉽지
않습니다. 하지만
await
키워드를 함수 바디를 동기적 덩어리로 구분하는 일종의
표식이라고 생각해 보십시오. ES2017 인터프리터는 함수 바디를 일련의 하위 함수
여러 개로 분해할 수 있으며 각 하위 함수는 자신의 앞에 있는,
await
로 표시된 프
라미스의
then()
메서드에 전달됩니다.
13.4
이 장 초반에서 콜백과 이벤트 기반 비동기성에 대해 설명했고, 프라미스를 소개하
면서 프라미스는
setInterval()
이나 웹 브라우저의 ‘클릭’ ...