Promise는 비동기 통신에 사용되는 객체이다. Promise는 세 가지 상태를 가지는 데, pending 상태는 아직 작업이 완료되지 않은 상태를 의미하며, fulfilled 상태는 작업이 성공적으로 완료된 상태를 그리고 rejected 상태는 작업이 실패한 상태를 의마한다. fullfilled 과 rejected 는 각각 성공 결과와 실패에 대한 에러메시지를 가지고 있다.
async&await 는 Promise를 더 쉽게 다룰 수 있도록 해주는 문법이다. async 함수는 항상 Promise를 반환하며, await 키워드는 Promise가 처리될 때까지 기다린 후 해당 결과를 반환하다.