javascript/자기개발(일기장느낌)

async/await 에 대해서...

샴또 2024. 3. 8. 17:32

async/await 란?

async/await는 비동기적인 작업을 처리할 수 있는 문법이다. async 함수를 정의하면 함수 내부에서 await 키워드를 이용하여 비동기적으로 처리되는 작업이 완료될 때까지 기다린 후 결과값을 반환하는 처리를 할 수 있다. async/await는 Promise를 기반으로 하며, 코드를 보다 간결하고 직관적으로 작성할 수 있도록 해준다. async 함수는 항상 promise 객체를 반환하며, await키워드를 이용하여 비동기 처리 결과를 기다린다. 

 

async 함수 

함수 async 는 function앞에 위치한다. 그렇게 되면 해당하는 함수는 항상 promise를 반환한다. 또한 promise가 아닌 것은 promise로 감싸서 반환한다. 아래는 간단한 예제이다.

async function myAsyncFunction() {
    // 비동기 작업 수행
    return "Hello, async!";
}

await 문법

 await 는 async 함수 안에서만 사용할 수 있으며, 비동기 작업이 완료될 때까지 기다리는 역할을 한다. await 뒤에는 Promise 를 반환하는 함수나 표현식이 위치하고, 해당 작업이 완료되면 결과는 반환된다. 아래는 간단한 예제이다.

async function myAsyncFunction() {
    // 비동기 작업 수행
    let result = await someAsyncOperation();
    console.log(result);  // 비동기 작업이 완료된 후 실행됨
}

 

간단한 설명을 하자면 someAsyncOperation()은 Promise를 반환한 한수로 await는 해당 작업이 완료될 때까지 대기하고 그 결과를 result 변수에 할당한다. 

 

이와 같이 async와 await는 함께 사용해서 코드를 더 읽기 쉽게 만들고 비동기 작업을 동기적으로 작성할 수 있게 도와준다.

 

async/await 와 promise 의 차이점

  1. 가독성 및 직관성 : asyncawait는 promise 보다 더 코드를 읽기 쉽게 만들어주고 비동기 작업을 동기적으로 작성할 수 있다.
  2. 오류처리 : asyncawait는 try-catch를 통한 예외처리가 간편하다. Promise에서는 .catch()를 사용해야 한다.
  3. 체이닝 (Chaining) : Promise는 .then()을 통해 체이닝이 가하지만 async/awiat는 보다 간결하게 비동기 작업을 순차적으로 나타낼 수 있다.
  4. 반환 값 : Promise는 항상 then()을 사용해서 값을 처리하지만 async/await는 비동기 작업의 결과를 직접 변수에 할당할 수있다.

[출처]https://blog.risingstack.com/mastering-async-await-in-nodejs/

 

※ 체이닝 : 여러 비동기 작업을 순차적으로 연결하여 실행하는 패턴을 의미한다. 

 

참고 사이트

https://ko.javascript.info/async-await