1. Promise란?
- Promise는 자바스크립트에서 비동기 작업을 처리하기 위한 객체.
- 비동기 작업의 결과를 나타내는 객체.
- 비동기 작업이 완료되면 Promise의 상태가 변하게 됨
- 비동기 작업은 시간이 걸리는 작업(예: 데이터 fetching, 파일 읽기 등)을 의미
- Promise는 주로 3가지 상태를 가짐
- Pending (대기 중): 작업이 아직 완료되지 않은 상태.
- Fulfilled (이행됨): 작업이 성공적으로 완료된 상태.
- Rejected (거부됨): 작업이 실패한 상태.
let promise = new Promise((resolve, reject) => { // 비동기 작업을 수행 let success = true; // 성공 여부를 나타내는 변수 if (success) { resolve("작업 성공!"); // 성공 시 resolve 호출 } else { reject("작업 실패!"); // 실패 시 reject 호출 } });
- 위 코드에서
new Promise(...)는 새로운 Promise 객체를 생성.
- 비동기 작업이 성공하면
resolve를 호출하고, 실패하면reject를 호출.
2. resolve란?
- resolve는 Promise가 성공적으로 완료되었음을 나타내는 함수.
- 이 함수를 호출하면 Promise의 상태가 "fulfilled"로 변경됨
promise.then((result) => { console.log(result); // "작업 성공!"이 출력됨 }).catch((error) => { console.log(error); // 작업이 실패한 경우 출력 });
then메서드는 Promise가 이행되었을 때 실행될 코드를 정의.catch메서드는 거부되었을 때 실행될 코드를 정의.
3. return Promise.resolve()
Promise.resolve(value)는 주어진 값을 가진 이행된 상태의 Promise를 생성하는 메서드
즉, 이미 완료된 Promise를 만들고 싶을 때 사용
→ ”작업이 성공적으로 완료되었다"는 상태로 Promise를 반환
function getData() { return Promise.resolve("즉시 작업 완료!"); // 즉시 "즉시 작업 완료!"라는 값을 가진 Promise를 반환 } // 사용 getData().then(message => { console.log(message); // 콘솔에 "즉시 작업 완료!"가 출력됨 });
- 이 코드는 즉시 "작업 성공!"이라는 메시지를 가진 Promise를 반환함
4. return new Promise((resolve) => {...})
new Promise((resolve) => {...})는 새로운 Promise 객체를 생성.
- 여기서
resolve는 함수의 인자로 전달됨
- 이 부분에서
new는 JavaScript에서 객체를 생성할 때 사용하는 키워드. 즉, 새로운 Promise 객체를 만들기 위해new를 사용.
resolve는 내부에서 비동기 작업이 성공적으로 완료되었을 때 호출됨
return new Promise((resolve) => { // 비동기 작업 수행 setTimeout(() => { resolve("비동기 작업 완료!"); // 1초 후 성공적으로 작업 완료 }, 1000); });
- 1초 후에 "비동기 작업 완료!"라는 메시지로 Promise를 이행함
5. 대기 목록에서의 resolve
- 대기 목록에 추가되는
resolve는 나중에 호출될 함수를 나타냄. 즉, 프린터가 사용 가능해졌을 때 이 함수를 호출하여 대기 중인 작업을 완료함
return new Promise((resolve) => { this.queue.push(resolve); // 대기 목록에 resolve 함수를 추가 });
- 나중에
release()메서드에서 이resolve를 호출하여 대기 중인 작업을 완료함