- 비동기 처리를 위해 사용하는 자바스크립트 내장 객체이다.
- 객체로써 언젠가 완료될 일을 나타낸다.
- 완료되면 정상적인 값 또는 실패의 이유를 반환한다.
- 생성함수의 매개변수
answer
는Promise
에 대한 성공, 실패를 결정한다.Promise
는 매개변수로resolve
와reject
를 가진다resolve
는 약속을 성공시킬 수 있는 함수로 호출 시 결과를 인자로 전달한다.reject
는 실패 처리를 위한 함수로 호출 시 실패 이유를 인자로 전달한다.
Promise
객체 생성 함수
promiseA
객체는resolve
되어 '시청하겠습니다' 라는 결과값이 전달된다.promiseB
객체는reject
되어 '시간이 안돼요' 라는 거절의 이유가 전달된다.catch
메소드에reject
시 호출될 함수를 등록하는데then
메소드의 두번째 인자로reject
시 호출될 함수를 전달하면 먼저 호출되어catch
메소드로 등록된 함수는 무시된다.
async
함수는 await
구문과 함께 비동기 작업을 제어한다.await
키워드는 반드시 async
함수 안에서만 유효하다.await
키워드가 있는 비동기 함수는 이벤트 루프를 통해 비동기로 작업을 처리한다.async
함수는 이러한 비동기 작업이 완료될 때까지 일시 중지 상태로 비동기 작업의 해결을 기다린다.async
함수가 다시 실행되고 함수 결과를 반환한다.Promise
객체 생성 함수
setTimeout
함수로 2초 뒤에 로직 처리를 약속한다.person
객체의energy
속성을 기준으로 50을 넘으면resolve
함수를 실행하고 그렇지 않으면reject
함수를 실행한다.
async
함수 표현식으로 정의
- 비동기 처리되는
doWork
함수를 연속으로 호출한다.await
키워드를 추가하여 비동기 작업의 순서를 보장한다.- 정리, 청소 순서로
resolve
인자로 전달된 함수가 호출되다가 심부름에서personA
객체의energy
속성의 값이 50보다 작아reject
인자로 전달된 함수가 호출되어error
를 반환한다.