promise란?
제작 코드 + 소비 코드를 연결해 주는 자바스크립트 객체 입니다.
- 제작 코드 ( producing code )
- 원격에서 스크립트를 불러오는 것 같은 시간이 걸리는 일입니다.
- 소비 코드 ( consuming code )
- 제작 코드의 결과를 기다렸다가 이를 소비하는것 이때 소비 주체는 여럿이 될수 있습니다.
- promise 객체 생성 문법
let promise = new Promise(function(resolve, reject) {
// executor (실행 함수로 new Promise가 만들어질 때 자동으로 실행된다.)
}
-
excutor는 promise의 상태를 둘 중 하나로 호출하고 이때 프라미스 객체의 상태가 변화합니다.

-
처리가 끝나면 executor는 처리 성공 여부에 따라 resolve나 reject를 호출 합니다.
- resolve - 성공적으로 끝났을 경우에는 결과를 나타내는 value와 함께 호출
- reject - 에러 발생 시 에러 객체를 나타내는 error와 함께 호출
-
new Promise 생성자가 반환하는 Promise 객체는 state, result 프로퍼티를 갖습니다.
- state : pending → fulfilled or rejected
처음엔 pending으로 시작하여 resolve가 호출된다면 fulfilled, reject가 호출되면 rejected로 변한다.
- result : undefined → value or error
처음엔 undefined이었다 resolve(value)가 호출되면 value, reject(error)가 호출되면 error로 변한다.
then, catch, finally
then
promise.then(
function(result) {/* result를 다룹니다. */}
// 프라미스가 이행되었을 때 실행되며 실행 결과를 받습니다.
function(error) {/* erro를 다룹니다. */}
// 프라미스가 거부되었을 때 실행되며 에러를 받습니다.
);
catch
에러만 발생한 경우를 다루고 싶다면 catch를 사용할수있습니다.
.then(null, errorHandlingFunction)과 동일하게 작동합니다.
- .catch는 .then에 null을 전달하는 것과 동일하게 작동합니다.
- .catch(function)은 promise.then(null, function)과 동일하게 작동합니다.
finally
- 프라미스의 성공, 실패 여부와 상관없이 프라미스가 처리되면 실행됩니다.