자바스크립트에서 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 메서드를 호출하여 다음 작업을 처리할 수 있습니다.
'IT > javascript' 카테고리의 다른 글
자바스크립트 프로토타입 이란? (0) | 2023.04.18 |
---|---|
JSON 이란? (0) | 2023.04.18 |
자바스크립트 콜백 지옥(CallBackHell) (0) | 2023.04.17 |
자바스크립트 WebAPI와 단일 스레드 (0) | 2023.04.17 |
자바스크립트 콜 스택(Call Stack) (0) | 2023.04.17 |
댓글