TIL40-03 promise, async, await , 비동기 처리

김태혁·2023년 2월 23일
0

TIL

목록 보기
123/205

Promise와 aync/await의 차이

  • Promise와 async/await는 모두 비동기 처리를 위한 기술이다. 그러나 두 기술은 사용 방법과 동작 방식에 차이가 있다.

1. Promise

  • Promise는 비동기 작업의 결과를 나타내는 객체다.
  • Promise를 사용하면 비동기 작업이 수행되고 결과가 반환될 때까지 기다리지 않고 다른 작업을 수행할 수 있다.
  • 이때 비동기 작업이 완료되면 then() 메소드나 catch() 메소드를 호출하여 결과를 처리한다.
  • 이러한 방식은 콜백 지옥(callback hell)을 피할 수 있지만, 비동기 작업을 처리하는 코드가 then() 메소드와 catch() 메소드로 구성되므로 가독성이 떨어질 수 있다.

2. async/await

  • async/await는 ES2017에서 추가된 기능으로, 비동기 작업을 동기적으로 처리할 수 있도록 해준다.
  • async 함수를 선언하면 함수 내부에서 await 키워드를 사용하여 Promise 객체가 처리될 때까지 기다릴 수 있다.
  • 이때 Promise 객체가 이행되면 해당 객체의 값을 반환한다.
  • 만약 Promise 객체가 거부되면 에러를 발생시킨다.
  • async/await를 사용하면 Promise 객체를 처리하는 코드가 비동기 처리의 흐름과 함께 존재하기 때문에 가독성이 좋아질 수 있다.

3. async/await를 활용할 유의해야 할 점

  • async 함수를 사용하려면 함수 앞에 async 키워드를 붙여야 한다.
  • await 키워드는 async 함수 내부에서만 사용할 수 있다.
  • await 키워드는 Promise 객체가 처리될 때까지 대기하므로, 비동기 작업을 수행하는 함수의 반환 값은 Promise 객체여야 한다.

정리

  • 결론적으로, Promise와 async/await는 모두 비동기 처리를 위한 기술이지만, async/await는 Promise를 더욱 간편하게 사용할 수 있도록 해주는 기술이다.
  • Promise를 사용할 때는 then() 메소드와 catch() 메소드를 사용하여 비동기 작업의 결과를 처리하며, async/await를 사용할 때는 Promise 객체를 처리하는 코드를 비동기 처리의 흐름과 함께 작성할 수 있다.
profile
도전을 즐기는 자

0개의 댓글