Promise

Seungrok Yoon (Lethe)·2024년 1월 9일
1
post-thumbnail

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를 사용하자.

profile
안녕하세요 개발자 윤승록입니다. 내 성장을 가시적으로 기록하기 위해 블로그를 운영중입니다.

0개의 댓글