9 / 24 TIL

최준호·2022년 9월 24일
0

< 목차 >

  1. Promise의 메서드
    • then()
    • catch()
    • finally()
    • promise에 대하여

1.Promise의 메서드

1-1) then()

  • then() 메서드는 Promise를 리턴하고 두개의 콜백 함수를 인수로 받는다. 하나는 Promise가 성공했을 때, 다른 하나는 실패했을 때를 위한 콜백 함수이다.

< 구문 >

p.then(onFulfilled, onRejected);



p.then(function(value) {
  // 이행
}, function(reason) {
  // 거부
});

< 예시 >

let 프로미스 = new Promise((성공, 실패) => {
  setTimeout(()=> {
    성공()
  }, 1000)
});

프로미스.then(() => {
  console.log('성공이다!')
}) // '성공이다!'

1-2 catch()

  • catch() 메서드는 Promise에서 실패한 사례만 반환하고 처리한다. 호출하는 방식과 동일하게 동작한다.
const promise1 = new Promise((resolve, reject) => {
  throw 'Uh-oh!';
});

promise1.catch((error) => {
  console.error(error);
});
// expected output:

< 예시 >

let 프로미스 = new Promise((성공, 실패) => {
  setTimeout(()=> {
    실패()
  }, 1000)
});

프로미스.catch(() => {
  console.log('실패다...')
}) // '실패다...'

then()이 실행되면 catch()는 절대 실행되지 않고, catch()가 실행되면 then()은 절대 실행되지 않는다!


1-3 finally()

  • finally() 메서드는 Promise 객체를 반환한다. Promise가 처리되면 충족되거나 거부되는지의 여부에 관계없이 지정된 콜백함수가 실행된다. Promise가 성공적으로 수행 되었는지, 거절되었는지에 관계없이 Promise가 처리 된 후에 코드가 무조건 한 번은 실행된다.

1-4 promise에 대하여

promise를 쓰는이유는 뭘까?

  • 콜백함수 대신에 가독성 및 보기좋은 코드를 사용하기 위하여
  • 성공 / 실패 의 경우에 맞춰 각각 다른 코드 실행이 가능하다.

promise에 대한 오해

  • 비동기적 처리가 가능하게 바꿔주는 절대적인 문법이 아니다!

  • promise는 콜백함수 디자인의 대체품일뿐이다!

  • Promise는 성공 / 실패 판정기계라고 생각하면 편하다!

profile
LV2 프론트엔드 엔지니어

0개의 댓글