resolve, reject 정리하기

·2 min read

처음 봤을때 잠깐 생소했던 resolve, reject에 대해 정리해보려 한다.

비동기 처리를 하면 Promise를 맞이하게 된다. 대부분은 promise.then(result => {성공하면 돌아갈 코드} 형식으로 사용을 하면서 then에 친숙해진다. 하지만 다른 오픈소스를 보다가 다른 형태를 보았는데 new Promise((resolve, reject) => {}) 형태가 존재한다. 다음과 같은 형태로 예시를 들어보자

// Callback 방식
function test(callback) {
  if (조건) {
    callback(new Error('에러'), undefined)
    return
  }
  callback(undefined, '성공')
}

// Promise 방식
new Promise((resolve, reject) => {
  if (조건) {
    resolve('성공')
  }
  reject('실패')
})

위에 예시를 보면 첫번째는 콜백 방식이고, 콜백 방식이 성공/실패를 구분할때 인자의 위치를 사용한다. 다음 Promise 방식을 살펴보면, 비동기 작업의 처리 과정에서 2개의 인자로 성공/실패를 구분한다.

다음은 오픈소스를 참고하면서 내가 보게되었던 구조였다. 만나면 당황하지 말자

function process(file) {
  new Promise(function (resolve, reject) {
    // 첫번쨰 처리내용
    resolve('result1')
  })
    .then(function (result1) {
      return new Promise(function (resolve, reject) {
        resolve('result2')
      })
    })
    .then(function (result2) {
      return new Promise(function (resolve, reject) {
        resolve('result3')
      })
    })
    .then(function (result3) {
      //마지막 처리 완료
    })
}
← Previous
OAuth 정리
Next →
동기 vs 비동기, 블록킹 vs 논 블록킹