👋 Promise 개요, Promise 처리 흐름, Promise 상태
1. Promise 개요
-
JS는 기본적으로
동기
로실행- 실행이 끝나야 다음 코드를 실행함
-
Promise
는 비동기로 처리(실행)함- 코드를 연속으로 처리(실행)하지 않고, 중간에 흐름이 끊어졌다가 연결된 코드를 처리 할 수 있는 환경이 되었을 때 실행함
- 이를 위한 메커니즘을 갖고 있음
DOM
스펙에서JS
스펙으로 전환
2. Promise 처리 흐름
-
Promise
처리(실행) 흐름 개요const obj = new Promise((resovle, reject) => { resolve(); console.log('Promise'); }); obj.then( (value) => { console.log('성공'); }, (reson) => { console.log('실패'); }, ); console.log('마지막'); // Promise // 마지막 // 성공
-
new Promise()
를 실행함- 파라미터의 함수를 실행함
resolve()
를 호출 하지 않음console.log("Promise")
를 실행obj
변수에Promise
인스턴스 할당
obj.then()
을 실행하지 않음- 마지막 줄의
console.log("마지막")
실행함 -
resolve()
실행then()
의 첫 번째 파라미터 함수 실행console.log("성공")
실행
3. Promise 상태
-
상태는 3가지이며, 하나만 발생함
pending, settled(fulfilled, rejected)
-
pending
상태new Promise()
로 인스턴스 생성
const obj = new Promise((resolve, reject) => { resolve(); console.log('pending'); }); obj.then( (value) => { console.log('성공'); }, (reson) => { console.log('실패'); }, ); console.log('마지막'); // pending // 마지막 // 성공
-
settled
상태pending
이 종료된 상태를 나타내며fulfilled
와rejected
상태로 구분- 바인딩한 핸들러 함수가 호출됨
const obj = new Promise((resolve, reject) => { resolve(); console.log('pending'); }); obj.then( (value) => { console.log('성공'); }, (reson) => { console.log('실패'); }, ); console.log('마지막'); // pending // 마지막 // 성공
fulfilled(성공)
:then()
의 첫 번째 함수 호출rejected(실패)
:then()
의 두 번째 함수 호출