본문 바로가기

기술면접

8_Async/Await & Promise의 차이

Async/Await와 Promise는 JavaScript에서 비동기 코드를 다룰 때 사용되는 두 가지 기능입니다. 


  Promise
Promise는 JavaScript에서 비동기 작업을 처리하는데 사용되는 객체입니다.
Promise는 비동기 작업이 완료되었을 때 성공 또는 실패를 나타내는 대기(pending), 이행(fulfilled), 거부(rejected)의 세 가지 상태 중 하나를 가집니다.
Promise는 성공 또는 실패와 관련된 처리기(Handler)를 등록할 수 있습니다.

.then()을 사용하여 성공 처리기를 등록하고, .catch()를 사용하여 실패 처리기를 등록할 수 있습니다.

  Async/Await
async 함수는 Promise를 사용하여 비동기적으로 동작하는 함수를 정의하는 방법입니다.
async 함수 내에서 await 키워드를 사용하여 Promise가 이행될 때까지 기다릴 수 있습니다. 

이 때, await 키워드를 사용한 표현식은 Promise가 이행되면 결과를 반환합니다.
await 키워드는 async 함수 내에서만 사용할 수 있습니다.
try/catch 문을 사용하여 await 표현식에서 발생하는 에러를 처리할 수 있습니다.

✅ 차이점:
1️⃣ 비동기 코드 처리:
Promise는 .then()과 .catch()를 사용하여 비동기 코드를 처리합니다.
Async/Await는 async 함수와 await 키워드를 사용하여 비동기 코드를 처리합니다.
가독성:

Async/Await는 코드를 읽고 이해하기 쉽습니다. 비동기 작업이 일어날 때 언제 Promise를 사용하는지 명시적으로 보여줍니다.
Promise는 .then() 메서드를 여러 번 체인으로 연결할 수 있기 때문에 복잡성이 증가할 수 있습니다.

 

2️⃣ 에러 처리:
Async/Await는 try/catch 문을 사용하여 에러를 처리할 수 있습니다.
Promise는 .catch()를 사용하여 에러를 처리합니다.

 

3️⃣ 중첩된 비동기 작업:
Async/Await는 중첩된 비동기 작업을 처리하기가 더 쉽습니다. 각 비동기 호출을 단순한 방식으로 처리할 수 있습니다.
Promise는 중첩된 .then() 체인을 통해 비동기 작업을 처리할 수 있지만, 코드가 복잡해질 수 있습니다.

 

일반적으로 Async/Await가 Promise보다 비동기 코드를 다룰 때 이해하기 쉽고, 에러 처리가 간편하여 선호되는 방식입니다. 

'기술면접' 카테고리의 다른 글

10_ 연산자 == & 연산자 ===  (0) 2024.02.13
9_Arrow Function 무엇인가?  (0) 2024.02.13
7_변수 선언 키워드 var : let : const 차이  (0) 2024.02.08
6_useEffect 실행 순서  (1) 2024.02.07
5_useRef 란 무엇인가?  (0) 2024.02.06