ECMAScript Essence - Async Await
Async Await
참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/async_function
async 함수는 비동기 함수로써 이벤트 루프를 통해 비동기적으로 작동합니다. 암묵적으로 Promise를 사용하여 결과를 반환합니다. await 연산자는 async 함수의 실행을 일시 중지하고 전달 된 Promise의 해결을 기다린 다음 async 함수의 실행을 다시 시작합니다. async 함수는 복잡한 비동기 함수를 이해하기 쉬운 동기방식의 코드처럼 작성할 수 있도록 도와주는 문법입니다.
async 함수에 이해를 돕기위해서 일반 함수로 변경해 보겠습니다.
주석처리한 함수와 새로 작성한 함수는 결과적으로 같습니다. 이를 바탕으로 다음과 같은 사실을 파악할 수 있습니다.
await 앞에 할당된 변수는 then 함수에게 전달되는 콜백함수의 파라미터와 같다.
await 밑에 배치된 코드는 then 함수에게 전달되는 콜백함수 내 로직이다.
async 함수는 암묵적으로 Promise를 반환한다.
async 함수의 return 구문은 즉시 반환되지 않는다. async 함수의 return 구문은 Promise의 resolve 함수를 호출하는 것과 같다.
async 함수는 Promise를 이용한 비동기 처리 로직을 await 연산자를 이용해 동기방식처럼 취급하여 작성할 수 있도록 도와주는 함수다.
따라서 원한다면 일반 함수 resolveAfter2Seconds()도 async 함수로 바꿀 수 있습니다.
에러처리
성공 테스트 케이스
실패 테스트 케이스
getProcessedData() 일반함수를 async 함수로 변경합니다.
async 함수는 동기방식의 로직처럼 try-catch 구문으로 비동기 함수에서 발생하는 예외를 잡아서 처리할 수 있습니다.
댓글 없음:
댓글 쓰기