자바스크립트 ES6+/Promise
Promise와 resolve(), thenable(), reject()
oilater
2023. 12. 29. 02:19
resolve()
- 성공(fulfilled) 상태의
- Promise 인스턴스를 생성하여 반환한다.
- Promise.resolve() 형태로 작성한다.
- 파라미터 값에 따라 생성 바업이 다르다.
- 파라미터에 값을 작성하면
- 파라미터 값으로 Promise 인스턴스를 생성하여 반환
const obj = Promise.resolve(["sports", "music"]); obj.then((value) => { console.log(value); }); console.log("끝");
- const obj = Promise.resolve(["sports", "music"]);Array, Object 등을 사용해야 한다.
- resolve() 파라미터에 값을 작성했다. 값을 하나만 작성할 수 있으므로 다수를 작성하려면
- new 연산자를 사용하지 않지만 Promise 인스턴스를 생성하여 반환한다.
- 성공(fulfilled) 상태로 설정한다.
- 성공 상태이므로 then()의 첫 번째 파라미터 함수가 호출된다.
- obj.then((value) => {log(value)});
- Promise.resolve([”sports”, “music”])의 파라미터 값이 value에 설정된다.
- 파라미터에 Promise 인스턴스를 작성하면
- 파라미터의 Promise 인스턴스의 값을 사용하여
- Promise 인스턴스를 생성하여 반환
const obj = Promise.resolve(["sports", "music"]); Promise.resolve(obj).then((value) => { console.log(value); }); // ["sports", "music"]
- Promise.resolve(obj)
- resolve() 파라미터에 Promise 인스턴스를 작성했다.
- Promise 인스턴스를 생성하여 반환한다.
- 성공(fulfilled) 상태로 설정한다.
- then(param) ⇒ {log(param); });
- obj 인스턴스의 resolve() 파라미터 값이 param에 설정된다.
thenable
- Promise.resolve()의 파라미터에
- then()을 작성한 형태이다.
const obj = Promise.resolve({
then(resolve, reject) {
resolve([1, 2]);
},
});
obj.then((value) => {
console.log(value);
});
console.log("끝");
reject()
- 실패(reject) 상태의
- Promise 인스턴스를 생성하여 반환한다.
- Promise.reject() 형태로 작성한다.
- 파라미터에 reject 사유를 작성한다.
- then()을 연결한 형태
const obj = Promise.reject("실패");
obj.then(
(value) => {
console.log(value);
},
(value) => {
console.log(value);
}
);
- 실패 상태이므로 then()의 두 번째 파라미터 함수가 호출된다.
- Promise.reject(”실패”)에서 “실패”가 value에 설정된다.
- catch()를 연결한 형태
const obj = new Error("에러 발생");
Promise.reject(obj).catch((error) => {
console.log(error.message);
});
console.log("끝");
// 끝
// 에러 발생
- Error 인스턴스를 생성한다.
- Promise.reject(obj)reject()를 실행하지 않는다.
- obj 인스턴스를 사용하여 Promise 인스턴스를 생성한다.
- log(”끝”)을 실행한다.
- Promise.reject(obj)를 실행하며
- catch()가 호출된다.
- catch((error) ⇒ log(error.message));
- obj 인스턴스가 error에 설정된다.
<aside> 💡 성공, 실패가 결정되어 있는 상태라면 이런 방식으로 프로미스를 생성할 수 있다.
</aside>
728x90
반응형
LIST