[TIL] 비동기 작업과 Promise

데이빗·2024년 6월 17일

Javascript

목록 보기
3/13

비동기 작업이란?

  • 비동기 작업(Asynchronous operation)이란 프로그램의 주 실행 흐름을 차단하지 않고 백그라운드에서 수행되는 작업을 말합니다.
    • 이런 작업 방식은 프로그램이 특정 작업의 완료를 기다리지 않고 다음 코드를 계속 실행할 수 있도록 해줍니다.

Promise

  • Promise는 JS에서 비동기 작업을 쉽게 수행할 수 있도록 도와주는 객체입니다.
  • 비동기 연산의 세 가지 상태를 가지고 있습니다.
    1. Pending (대기): 연산이 아직 완료되지 않은 상태.
    2. Fulfilled (이행): 연산이 성공적으로 완료된 상태.
    3. Rejected (거부): 연산이 실패한 상태.

기본 사용법

  • Promise를 생성할 때는 new Promise() 생성자를 사용하고, 이 생성자는 resolve와 reject라는 두 가지 함수를 매개변수로 받는 실행 함수(executor function)를 인자로 받습니다.
    • resolve 함수는 Promise를 성공적으로 완료할 때 호출
    • reject는 실패했을 때 호출
let promise = new Promise(function(resolve, reject) {
  // 비동기로 수행될 작업을 여기에 작성
  setTimeout(() => {
    if (/* 조건 */) {
      resolve("성공적인 결과");
    } else {
      reject("실패한 결과");
    }
  }, 1000);
});코드를 입력하세요

처리 방법

  • Promise의 결과에 따라 처리하는 메서드

  • .then(): Promise가 성공적으로 완료되었을 때 실행될 함수를 등록합니다.

    • 이 메서드는 두 개의 함수를 매개변수로 받을 수 있으며, 첫 번째 함수는 Promise가 fulfilled 상태일 때 호출되고, 두 번째 함수는 rejected 상태일 때 호출됩니다.

      promise.then(
        result => { console.log(result); },  // 성공 처리
        error => { console.log(error); }     // 실패 처리
      );
      
  • .catch(): Promise가 거부됐을 때 실행될 함수를 등록합니다. 이 메서드는 오류를 처리하기 위해 사용됩니다.

    promise.catch(
      error => { console.log(error); }
    );
    
  • .finally(): Promise의 성공/실패 여부와 관계없이 실행될 함수를 등록합니다. 이 메서드는 주로 리소스를 정리하는 코드에 사용됩니다.
    promise.finally(() => {
    console.log("작업 완료");
    });
profile
데이터 분석가

0개의 댓글