Node.js
비동기 : Promise
babydeve
2023. 6. 28. 23:45
1. Promise
- 어떤 동작을 비동기로 실행하는 것
- 내용이 실행은 되었지만 결과를 아직 반환하지 않은 객체이다.
- 콜백헬이라고 불리는 지저분한 자바스크립트 코드의 해결책이다.
* Promise의 인스턴스 객체를 생성하는 부분은 동기적으로 실행이 된다.
* promise에서 결과를 가지고 있다가 then, catch할 때 결과를 꺼낸다.
* .then/ .catch를 실행할 때 비동기적으로 실행이 된다.
const condition = true;
const promise = new Promise((resolve, reject) => { // Promise 인스턴스 객체 생성
if(condition){
resolve('성공') //무언가를 실행 후 resolve를 호출하면 성공한 것
} else{
reject('실패) //reject를 호출하면 실패한 것
}
})
promise
.then((message) => {
console.log(message)
})
.catch((error) => {
console.log(error)
})
2. 콜백와 Promise의 차이점
- 콜백함수 : 함수 안에 위치해서 함수 실행 시에 바로 실행된다. (콜백지옥 발생)
- Promise : 변수에 저장해 두었다가 필요할 때 호출할 수 있다. (콜백지옥 방지, 프로미스 지옥 발생)
3. Promise.all(배열)
- 여러 개의 promise를 동시에 실행시킨다.
- Promise 인스턴스 중 하나라도 실패 시 catch를 실행한다.
- allSettled를 이용해 실패한 것만 추려낼 수 있다.
- const promise1 = Promise.resolve('성공1') => 바로 resolve 하는 promise
- const promise3 = Promise.reject('실패') => 바로 reject 하는 promise
const promise1 = Promise.resolve('성공1') //바로 resolve 하는 promise
const promise2 = Promise.resolve('성공2')
Promise.all([promise1, promise2])
.then((result) => {
console.log(result)
})
.catch((error) => {
console.error(error)
})
728x90