JAVASCRIPT

[JAVASCRIPT] 비동기 - 콜백과 프로미스, 예외 처리(then, catch, finally)

mikrw 2023. 2. 10. 23:38

method가 순서대로 실행되기 위한 방법

 

1. 콜백(callback)

function a(callback) {
  console.log('A')
  callback()
}

function b() {
  console.log('B')
}

a(function(){
  b()
})

 

2. 프로미스(promise)

function a(){
  return new Promise(function (resolve){
    setTimeout(function (){
      console.log('A')
      resolve('Hello')
    }, 1000)
  })
}

function b(){
  console.log('B')
}

async function test(){
  const res = await a()
  console.log('res:', res)
  b()
}

test()

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise

 

Promise - JavaScript | MDN

Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다.

developer.mozilla.org

 

then

function a(){
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log('A')
      resolve()
    }, 1000)
  })
}

function test() {
  a().then(() => {
    console.log('B')
  })
}

test()

 

catch

finally

function a(number) {
  return new Promise((resolve, reject) => {
    if(number > 4) {
      reject()
      return
    }
    setTimeout(() => {
      console.log('A')
      resolve()
    }, 1000)
  })
}

function test() {
  a(5)
    .then(() => {
      console.log('Resolve')
    })
    .catch(() => {
      console.log('Reject')
    })
    .finally(() => {
      console.log('Done')
    })
}

test()