본문 바로가기
IT/javascript

자바스크립트 promise 사용법

by 뉴코딩맨 2023. 4. 18.
자바스크립트에서 Promise는 비동기적인 작업을 처리할 때 사용하는 객체입니다. Promise는 주어진 작업이 완료되었을 때 결과를 반환하거나, 작업이 실패했을 때 에러를 반환하는 역할을 합니다. Promise를 사용하면 콜백 함수를 사용하지 않고도 비동기 작업의 결과를 처리할 수 있습니다.

 

 

사용법

 

Promise 객체는 대기(pending), 이행(fulfilled), 거부(rejected)의 3가지 상태를 가집니다. Promise 객체가 생성될 때는 대기 상태(pending)이며, 이행 또는 거부 상태가 되면 그 이후에는 상태가 변경되지 않습니다.
 
Promise 객체는 다음과 같은 형식으로 생성됩니다.
 
const promise = new Promise((resolve, reject) => {
    // 비동기 작업 수행
});
 
new Promise는 Promise 객체를 생성하는 생성자 함수입니다. 생성자 함수는 인자로 콜백 함수를 받으며, 이 콜백 함수는 resolve와 reject라는 2개의 함수를 인자로 받습니다. resolve 함수는 작업이 성공적으로 완료되었을 때 결과를 반환하며, reject 함수는 작업이 실패했을 때 에러를 반환합니다.

 

 
Promise 객체를 사용하면 다음과 같이 비동기 작업을 처리할 수 있습니다.
 
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
    	resolve("Hello, World!"); // 작업이 완료됐을 때 resolve 함수 호출
    }, 1000);
});

promise.then((result) => {
    console.log(result); // "Hello, World!" 출력
}).catch((error) => {
    console.error(error);
});
 
Promise 객체를 생성하고, 이 객체의 then 메서드를 사용하여 작업이 완료되었을 때 처리할 콜백 함수를 등록합니다. catch 메서드를 사용하여 작업이 실패했을 때 처리할 콜백 함수를 등록할 수 있습니다.
 
Promise 객체는 다른 Promise 객체를 반환할 수 있으며, 이를 연결하여 여러 개의 비동기 작업을 순차적으로 처리할 수 있습니다. 이를 Promise 체이닝(Promise chaining)이라고 합니다.
 
 
const promise = new Promise((resolve, reject) => {
    setTimeout(() => {
    	resolve("Hello, ");
    }, 1000);
});

promise.then((result) => {
	return result + "World!";
}).then((result) => {
	console.log(result); // "Hello, World!" 출력
}).catch((error) => {
	console.error(error);
});
 
Promise 객체의 then 메서드는 항상 새로운 Promise 객체를 반환하므로, 이를 체이닝하여 다음 작업을 처리할 수 있습니다. then 메서드에서 반환된 Promise 객체의 then 메서드를 호출하여 다음 작업을 처리할 수 있습니다.

 

댓글