JavaScript

[JavaScript] Promise

newchocolate 2022. 5. 31. 23:41
728x90
반응형

Promise

자바스크립트의 내장 객체이며, 콜백함수를 대체하여 사용한다.

Promise.resolve(): 주어진 값으로 이행하는 Promise 객체를 반환

Promise.reject(): 거부된 이유를 반환

Producer

Promise의 인스턴스가 Producer이다.

const promise = new Promise((resolve, reject) => {
	setTimeout(() => {
		resolve("hi");
		// reject(new Error("에러 발생"));
	}, 3000);
});

💡 새로운 Promise 인스턴스가 생성될때 executor가 자동적으로 실행된다.

Consumer

Promise 인스턴스의 메서드인 then, catch, finally가 Consumer이다.

promise
	.then((value) => {
		console.log(value); //resolve일 경우 "hi"
	})
	.catch((err) => {
		console.log(err); //reject일 경우 "에러 발생"
	})
	.finally(() => {
		console.log("finally 실행"); //resolve, reject 여부 상관없이 실행된다. 
	});

Promise.prototype.then():Promise를 리턴한다.

Promise.prototype.catch(): Promise를 리턴하며, then 과정 중에서 발생한 오류를 잡아낸다.

Promise.prototype.finally(): fulfilled, rejected와 상관 없이 실행하는 메서드

상태(State)

Promise 객체는 3가지 상태 중 하나의 상태를 갖는다.

  • 대기(pending): 이행하지도 거부하지도 않은 초기 상태
  • 이행(fulfilled): 연산이 성공적으로 완료됨
  • 거부(rejected): 연산이 실패함

 

728x90
반응형