프로미스_프로미스 객체 생성하기

릭터·2026년 1월 28일

Javascript

목록 보기
6/13

자바 스크립트와 노드에서는 주로 비동기 프로그램을 함
특히 이벤트 주도 방식때문에 콜백 함수를 자주 사용하는데
ES2015부터는 JS와 노드의 API들이 콜백 대신 프로미스 기반으로 재구성된다.

프로미스 규칙

프로미스 객체 생성하기

new Promise로 생성
안에 resolve와 reject를 매개변수로 갖는 콜백 함수 넣어준다.
이렇게 만든 promise 변수에 then과 catch 메서드를 붙일 수 있다.
프로미스 내부에서 resolve 가 호출되면 then이 실행되고 reject가 호출되면 catch 가 실행된다.

const codition = true; // true면 resolve,false면 reject
cosnt promise = new Promise((resolve,reject) => {
	if(condition){
    	resolve('성공');
   }else{
       reject('실패')
   }
});

promise
.then((message) => {
	console.log(message); // 성공 한 (resolve) 경우 실행
})
.catch((error) => {
	console.log(error); // 실패 (reject)한 경우 실행
});

실행결과 : 성공

resolve 와 reject에 넣어준 인자는 각각 then과 catch의 매개변수에서 받을 수 있다.
resolve('성공')이 호출되면 then의 message가 '성공'이 된다. reject('실패') 가 호출되면 catch의 error가 '실패'가 된다.
condition 변수를 false로 바꾸면 catch에서 에러가 로깅된다.


then이나 catch에서 다시 다른 then이나 catch를 붙일 수 있다.
이전 then의 return 값을 다음 then의 매개변수로 넘긴다.
프로미스를 return 한 경우 프로미스 수행된 후 다음 then이나 catch가 호출된다.

promise.then((message) => {
	return new Promise((resolve,reject) => {
    	resolve(message);
       });
})
.then((message2) => {
	console.log(message2);
    return new Promise((resolve, reject) => {
    	resolve(message2);
    });
}).then((message3) => {
    console.log(message3);
}).catch((error) => {
    console.error(error);;
})

실행결과 : 성공 
		 성공

처음 then에서 message를 resolve 하면 다음 then에서 받을 수 있다.
여기서 다시 message2를 resolve했으므로 다음 then에서 message3를 받았다

profile
풀스택 개발자를 꿈 꾸는 릭터입니다.

0개의 댓글