Promise 와 async/await 은 Javascript에서 비동기 코드를 처리하는데 사용되는 두가지 기술
1. Promise : Promise는 비동기 작업의 결과를 나타나는 객체이다
비동기 작업은 일반적으로 네트워크 요청, 파일 읽기/쓰기, 데이터베이스 쿼리 등과 같은 오래 걸리는
작업을 의미한다, Promise는 비동기 작업의 성공 또는 실패를 나타나는 상태를 가질 수 있다
Promise는 세 가지 상태를 가질 수 있으며 아래와 같다
pending(대기중) : 비동기 작업이 아직 완료되지 않은 상태이다
fulfulled(이행됨): 비동기 작업이 성공적으로 완료된 산태이다
rejected(거부됨) : 비동기 작업이 실패한 상대이다
Promise는 비동기 작업이 완료되면 결과를 처리하기 위해 then() 메서드를 사용할 수 있다
then()메서드는 이행된 경우와 거부된 경우에 각각 다른 콜백 함수를 제공할 수 있다
Promise는 비동기 작업의 체인을 구성하는데 유용하며 catch()메서드를 사용하여 에러를 처리할 수 있다
2. async/awiat : async/await은 Promise를 기반으로 한 비동기 코드 보다 직관적인 문법적안 개선을 제공한다
async 키워드로 함수를 정의하면 해당 함수는 암시적으로 Promise를 반환한다
await키워드는 Promise가 이행될 때까지 async 함수의 실행을 일시 중단한다
await은 Promise 객체의 값을 기다리는 동안 현재 스레드를 차단하지 않고 비동기적으로 실행된다
즉, 다른 작업을 수행하거나 다른 async 함수를 호출할 수 있다
await은 Promise가 이행되면 그 결과를 반환하며 만약 거부된 경우에는 Promise가 thow한 에러를
발생한다
try/catch 블록을 사용하여 await 표현식 내부의 에러를 처리할 수 있다.
async/await은 선언적이고 동기적인 코드 스타일을 제공하여 비동기 코드를 관리하기 쉽게 만들어준다
Promise 와 async/await 의 차이점
Promise는 비동기 작업을 처리하기 위한 시본적인 원칙을 제공하는 객체이다.
콜백 함수를 사용하여 비동기 작업의 결과를 처리한다.
async/await은 Promise를 더 편리하게 사용할 수 있도록 구문적인 개선을 제공한다.
await 키워드를 사용하여 Promise의 결과를 기다리고 async키워드를 사용하여 함수를 선언하면 Promise를 반환한다
즉 Promise는 비동기 작업의 상태를 나타내는 객체이고 async/await은 Promise를 더 쉽게ㅔ 사용할 수 있도록 문법을 제공하는 것이다