const requestData1 = () =>
new Promise((resolve) =>
setTimeout(() => {
console.log('timer ends, resolve')
resolve(1)
}, 3000),
)
const requestData2 = () =>
new Promise((resolve) =>
setTimeout(() => {
console.log('timer ends, resolve')
resolve(2)
}, 2000),
)
const requestData3 = () =>
new Promise((resolve) =>
setTimeout(() => {
console.log('timer ends, resolve')
resolve(3)
}, 1000),
)
const res = []
requestData1()
.then((data) => {
res.push(data)
// throw new Error('도중')
return requestData2()
})
.then((data) => {
res.push(data)
return requestData3()
})
.then((data) => {
res.push(data)
console.log(res)
})
.catch(console.error)
Promise 객체의 후속 매서드 then
의 콜백함수는, Promise 객체가 resolve
한 값을 첫번째 인자
로 받는다.
두 번째 인자
로는 이전 비동기 처리 과정에서 발생한 에러를 캐치할 수 있다.
Promise 객체의 후속 매서드 catch
는, 모든 then 매서드 이후에 호출이 된 경우에는 catch 이전 단계에서 발생했던 모든 애러
들을 잡아낼 수 있다! 그러니 에러 처리에는 then의 reject보다는 catch를 사용하자.