상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 비동기 프로그래밍에서 'promise'의 상태 변화는 어떻게 이루어지나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/비동기 프로그래밍/ko'>비동기 프로그래밍</a>에서 'Promise'는 JavaScript에서 비동기 작업의 완료 또는 실패를 나타내는 객체입니다. Promise는 세 가지 상태를 가질 수 있으며, 이 상태는 비동기 작업의 진행 상황을 나타냅니다. Promise의 상태 변화는 다음과 같은 방식으로 이루어집니다. Promise의 상태 1. 대기(Pending) : Promise가 생성된 직후의 상태입니다. 이 상태에서는 비동기 작업이 아직 완료되지 않았으며, 결과를 기다리고 있는 상태입니다. 2. 이행(Fulfilled) : 비동기 작업이 성공적으로 완료되었을 때의 상태입니다. 이 상태로 변화하면, Promise는 결과값을 가지고 있으며, 이 결과값은 `then()` 메서드를 통해 접근할 수 있습니다. 3. 거부(Rejected) : 비동기 작업이 실패했을 때의 상태입니다. 이 상태로 변화하면, Promise는 오류 정보를 가지고 있으며, 이 오류는 `catch()` 메서드를 통해 처리할 수 있습니다. 상태 변화의 과정 Promise의 상태 변화는 다음과 같은 과정을 통해 이루어집니다: 1. Promise 생성 : Promise는 `new Promise(executor)` 구문을 통해 생성됩니다. 이때 `executor`는 두 개의 인자를 받는 함수로, 첫 번째 인자는 이행을 위한 함수(`resolve`), 두 번째 인자는 거부를 위한 함수(`reject`)입니다. ```javascript const myPromise = new Promise((resolve, reject) => { // 비동기 작업 수행 }); ``` 2. 비동기 작업 수행 : Promise 내부에서 비동기 작업이 수행됩니다. 이 작업이 성공적으로 완료되면 `resolve` 함수를 호출하여 이행 상태로 변화시키고, 실패하면 `reject` 함수를 호출하여 거부 상태로 변화시킵니다. ```javascript const myPromise = new Promise((resolve, reject) => { setTimeout(() => { const success = true; // <a href='https://sangseek.com/sangseeks/예시/ko'>예시</a> 조건 if (success) { resolve("작업 성공"); } else { reject("작업 실패"); } }, 1000); }); ``` 3. 상태 변화 : `resolve` 또는 `reject`가 호출되면 Promise의 상태가 각각 이행 또는 거부로 변화합니다. 이 상태 변화는 비동기적으로 발생하며, 상태가 한 번 변화하면 다시 변경될 수 없습니다. 즉, Promise는 최종적으로 이행 또는 거부 상태로 고정됩니다. 4. 결과 처리 : Promise의 상태가 변화한 후, `then()`과 `catch()` 메서드를 사용하여 결과를 처리할 수 있습니다. `then()`은 이행 상태에서 호출되며, `catch()`는 거부 상태에서 호출됩니다. ```javascript myPromise .then(result => { console.log(result); // "작업 성공" }) .catch(error => { console.error(error); // "작업 실패" }); ``` Promise의 체이닝 Promise는 체이닝이 가능하여, 여러 개의 비동기 작업을 순차적으로 처리할 수 있습니다. 각 `then()` 메서드는 새로운 Promise를 반환하므로, 다음 `then()` 메서드를 호출할 수 있습니다. ```javascript myPromise .then(result => { console.log(result); return new Promise((resolve) => { setTimeout(() => resolve("다음 작업 성공"), 1000); }); }) .then(nextResult => { console.log(nextResult); // "다음 작업 성공" }) .catch(error => { console.error(error); }); ``` 결론 Promise는 비동기 프로그래밍에서 작업의 상태를 관리하고, 결과를 처리하는 데 매우 유용한 도구입니다. Promise의 상태 변화는 대기, 이행, 거부의 세 가지 상태로 이루어지며, 각 상태에 따라 적절한 메서드를 통해 결과를 처리할 수 있습니다. 이러한 구조는 비동기 작업을 보다 직관적이고 관리하기 쉽게 만들어 줍니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기