비동기 처리를 깔끔하게 하기 위해 사용하는 객체이다.
// 기본적인 사용 형태
const a = () => new Promise((resolve, reject) => {실행내용})
resolve 함수와 reject 함수를 뒤에서 받아서 실행한다
const a = new Promise((resolve, reject) => {
if (조건) {
resolve('성공') // 인수가 then 속의 함수로 전달
} else {
reject('실패') // 인수가 catch 속의 함수로 전달
}
})
a()
.then((res) => {console.log(res)}) // res = '성공'
.catch((err) => {console.log(err)}) // err = '실패'
resolve 함수에서 받은 '성공' 이라는 메세지는 then 속 함수의 인수로 전달되고, 함수가 실행된다.reject 함수에서 받은 '실패' 라는 메세지가 catch 속 함수의 인수로 전달되고, 함수가 실행된다."done" 출력하기const a = () => {
return new Promise(resolve => {
setTimeout(() => {
console.log(1)
resolve()
}, 1000)
})
}
const b = () => {
return new Promise(resolve => {
setTimeout(() => {
console.log(2)
resolve()
}, 1000)
})
}
const c = () => console.log(3)
a()
.then(b)
.then(c)
.then( () => {console.log('done')} )
// 1 2 3 done