티스토리 뷰

javascript를 개발하면서 특정 라이브러리들을 사용하다보면

callback function을 사용하는 경우들이 있다.

 

예를들면 아래와 같은 경우다.

request.get(url, function(error, response, data) {
  if (error) {
    throw new Error(error)
  } else {
    console.log(data)
  }
})

(물론 request 의 경우는 await을 사용할 수 있는 별도 라이브러리가 존재하긴 한다.)

 

만약 await을 쓰고싶다거나, Promise 체인에서 사용하고 싶다면

위의 함수를 promise로 감싸주어야 한다.

(당연한 말이지만 저 앞에다가 await 붙인다고 되는게 아니다..)

 

아래와 같이 해주면 된다.

const getData = () => {
  return new Promise((resolve, reject) => {
    request.get(url, function(error, response, data) {
      if (error) {
        reject(error)
      } else {
      	resolve(data)
      }
    })
  })
}

이렇게 되면 Promise를 리턴하는 함수가 된 것이다. 이제 아래처럼 활용할 수 있다.

// await 을 사용하는 경우
const data = await getData()
console.log(data)

// promise chain을 사용하는 경우
getData()
  .then(data => {
    console.log(data)
  })
  .catch(err => {
    console.log(err)
  })
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함