프로미스

hhnssl·2022년 9월 17일

프로미스의 후속 처리 메서드(then, catch, finally)

  • 프로미스가 settled(fulfilled 또는 rejected가 된 상태)됐을 때 처리를 해주는 메서드
  • 무조건 프로미스를 반환한다.

Promise.prototype.then

  • 두 개의 콜백 함수를 인수로 전달 받음
  • 첫 번째 자리에 오는 콜백 함수는 비동기 처리에 성공했을 때 호출되고, 두 번째 자리에 오는 콜백 함수는 실패했을 때 호출 된다.
      new Promise((_, 실패) => 실패('실패')) //
        .then(
          (성공하면) => console.log(성공하면),
          (실패하면) => console.log(실패하면)
        );
      new Promise((성공) => 성공('성공')) //
        .then(
          (성공하면) => console.log(성공하면),
          (실패하면) => console.log(실패하면)
        );

Promise.prototype.catch

  • 한 개의 콜백 함수를 인수로 전달 받음
  • 프로미스가 rejected 상태인 경우에만 호출
      new Promise((성공, 실패) => 실패('실패')) //
        .catch(
          (성공하면) => console.log(성공하면),
          (실패하면) => console.log(실패하면)
        );

Promise.prototype.finally

  • 한 개의 콜백 함수를 인수로 전달 받음
  • 프로미스 성공, 실패에 상관없이 무조건 한 번 호출된다.
      new Promise((resolve) => {
        resolve('성공했다치고~');
      }) //
        .finally(() => console.log('finally는 무조건 실행'));

프로미스의 에러 처리

  • then 메서드에서 성공했을 경우와 실패했을 경우 모두 처리를 할 수 있지만, 가독성이 좋지 않고 첫 번째 인자 콜백함수에서 발생한 에러를 캐치하지 못한다. 그래서 then 메서드에서는 성공을 처리하고 catch 메서드에서 에러를 처리하는 것을 권장한다.

프로미스 체이닝

  • then, catch, finally 메서드는 언제나 프로미스를 반환하므로 연속으로 호출 가능하다. 이를 프로미스 체이닝이라 함.
profile
의식의 흐름대로 정리하는 블로그

0개의 댓글