[Javascript] Promise
2023. 3. 1. 20:45ㆍ공부 중/Node.js
1. Promise
Jest를 공부하면서 비동기 처리와 관련한 내용이 나왔다.
비동기 처리를 편하게 도와주는 Promise 객체에 대해서 배웠고 활용해 보았다.
Promise를 활용하는 것에 있어서 중요한 포인트는 2가지다.
- State : 현재 비동기 작업의 진행 상태로 Pending(처리중), Reject(실패), Fufilled(성공)
- Producer와 Consumer : 정보를 제공하는 P와 소비하는 C를 이해해야 한다.
// Producer
const promise = new Promise((resolve, reject) => {
setTimeout(()=> { # 비동기 함수
try {
setTimeout(()=>{
resolve('Success!');} # 처리에 성공하고 결과값을 반환
, 3000);
} catch (error) {
reject(new Error('Error!')); # 처리에 실패하고 원인을 반환
}
};
// Consumer
promise
.then(value =>{ //성공
console.log(value);
})
.catch(error=>{ //실패
console.log(error);
});
.finally(()=>{ //성공과 실패와는 상관없이 마지막에 실행
console.log('finally');
});
// Promise chaining
const fetchNumber = new Promise((resolve, reject)=>{
setTimeout(()=>resolve(1),1000);
});
fetchNumber //비동기의 연속
.then(num => num * 2)
.then(num => num * 3)
.catch(error => { // 위에서 에러 생기면 발동
return '6'
})
.then(num => num * 4)
.then(num => num * 5)
.then(num => {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(num - 1), 1000);
});
})
.then(num => console.log(num));
Promise
객체는 선언과 동시에 작업을 처리하니깐 선언되는 위치를 조심해야 한다.
작업을 수행할 것이 확정되는 순간 선언하도록 하자.
아래는 구체적으로 promise를 활용하는 사례다.
'공부 중 > Node.js' 카테고리의 다른 글
[Jest] Matcher (0) | 2023.03.01 |
---|---|
[Jest] node.js 테스트 프레임워크 (0) | 2023.03.01 |
2023-02-19 node.js_17 (0) | 2023.02.19 |
2023-02-18 node.js_16 (0) | 2023.02.18 |
2023-02-13 node.js_15 (0) | 2023.02.13 |