Study/JavaScript

[JS] async & await

taecongs 2023. 9. 1. 17:55

알고있으면 좋은 Javascript Tip✨


async & await

  • 가장 최근에 나온 비동기 처리 패턴으로, 기존의 콜백함수와 프로미스의 단점을 보완한 문법이다.

(1) async 와 await의 사용법은?

  • 함수앞에 async를 붙이면 해당 함수는 자동으로 프로미스를 반환하게 된다.
  • 비동기로 처리되는 부분에 await를 붙이면 해당 프로미스가 끝날때까지 기다린다. (동기식으로 처리)
  • await은 async가 붙은 함수 안에서만 사용 가능하다.

(2) async 와 await의 진행 방식은?

  • async을 포함한 함수는 프로미스 객체가 반환되고 async 함수의 return 값은 프로미스의 resolve(성공)값이 된다.
  • async/await는 따로 에러 핸들링 기능이 없어 try-catch()문을 활용해야 한다.
(1) 기존 프로미스(Promise) 방식
function promiseFunc() {
    return new Promise((resolve, reject) => {
        resolve('Promise is test')
    })
}

// Promise is test
promiseFunc().then(console.log)


(2) async & await 방식
async function asyncFunc() {
    return 'Async is test'
}

// Async is test
asyncFunc().then(console.log)
  • async 함수에서 return 값은 resolve()와 같은 역할을 한다.
  • 문자열을 반환하는 것처럼 보이지만 실제로는 프로미스(Promise)를 반환한다.

(3) async 와 await의 예외 처리는?

  • 함수 내부에서 동기적으로 처리할 수 있기 때문에 try-catch 구문을 사용 예외 처리를 할 수 있다.
  • 물론 모든 예외를 try-catch 구문으로 처리하는 것은 아니다.
  • await은 async가 붙은 함수 내에서만 사용 가능하기 때문에 최종결과나 처리되지 못한 에러의 경우 catch() 메서드를 사용해 처리해 주곤 한다.
(1) try-catch 구문을 이용한 예외 처리 방법
async function promise() {
    throw 'rejected';
}

async function exceptionFunc() {
    try {
        await promise()
    } catch (error) {
        console.log('catch error!', error)
    }
}

// catch error! rejected
exceptionFunc()

'Study > JavaScript' 카테고리의 다른 글

[JS] 논리 연산자(&&, ||)  (0) 2023.09.04
[JS] 콜백 함수 (Callback Function)  (0) 2023.09.01
[JS] 프로미스(Promise)  (0) 2023.09.01
[JS] JSON & JSON.stringify & JSON.parse  (0) 2023.08.31
[JS] setTimeout & setInterval  (0) 2023.08.31