언어/Javascript

Promise

에린_1 2024. 11. 21. 22:09
728x90

Node.js

Promise

  • 비동기 작업을 처리하기 위해 사용되는 객체이다. 비동기 코드를 더 이해하기 쉽게 작성하고, 콜백 지옥을 피하기 위해 도입되었다.

Promise란?

  • 자바스크립트에서 비동기 작업의 결과를 나타내는 객체로, 결과값을 아직 사용 불가능한 시점과 결과가 사용 가능한 시점을 쉽게 관리할 수 있게 한다. Promise는 아래와 같은 세 가지 상태를 가질 수 있다.
    • Pending : 초기 상태로, 비동기 작업이 아직 완료되지 않은 상태이다.
    • Fulfilled : 작업이 성공적으로 완료된 상태이며, 결과 값(value)가 존재한다.
    • Rejected : 작업이 실패한 상태이며, 오류(reason)가 존재한다.
  • Promise는 상태가 변경되면 해당 상태로 연결된 처리기(handler)가 호출된다.

Promise의 생성 및 사용

  • Promise는 생성자 함수와 콜백을 사용하여 생성한다. 콜백 함수는 두 가지 매개변수를 받는다.
  • 비동기 작업이 성공하면 resolve를 호출하고, 실패하면 reject를 호출하여 상태를 변경한다.

체이닝과 then, catch 사용

  • Promise는 체이닝을 통해 비동기 작업을 순차적으로 처리할 수 있으며, 이를 위해 then과 catch 메서드를 사용한다.
    • then(onFulfilled) : Promise가 Fulfilled 상태가 되었을 때 호출되는 콜백 함수를 등록한다. then은 체이닝이 가능하여 여러 비동기 작업을 순차적으로 처리할 수 있다.
    • catch(onRejected) : Promise가 Rejected 상태가 되었을 때 호출되는 콜백 함수를 등록한다. 오류가 발생했을 때 이를 처리한다.

finaㅣly 메서드

  • finally() 메서드는 Promise가 Fulfilled 또는 Rejected 상태가 되었을 때 항상 실행된다.

Promise의 장점과 단점

  • 장점
    • 콜백 지옥 해결 : 콜백 함수의 중첩으로 인한 코드 가독성 문제를 체이닝을 통해 해결할 수 있다.
    • 비동기 흐름 제어 : then과 catch를 사용하여 비동기 코드의 흐름을 쉽게 제어할 수 있다.
    • 오류 처리 : catch 메서드를 통해 비동기 작업 중 발생하는 오류를 체계적으로 처리할 수 있다.
  • 단점
    • 복잡한 체이닝 : 비동기 작업의 체이닝이 길어질 경우 코드가 여전히 복잡해질 수 있다. 이는 이후 도입된 async/await으로 해결할 수 있다.
    • 디버깅 어려움 : 여러 비동기 작업을 체인으로 연결할 경우, 오류가 발생했을 때 디버깅이 어려울 수 있다.

체이닝

  • Promise 객체를 사용하여 여러 비동기 작업을 순차적으로 연결하는 방식이다. 한 비동기 작업이 완료된 후 그 다음 비동기 작업을 수행하는 방식으로, 이러한 연결된 작업들을 순서대로 실행하는 방법을 체이닝이라고 한다.
728x90

'언어 > Javascript' 카테고리의 다른 글

async/await  (0) 2024.11.22
Node.js 공부. 2  (0) 2024.04.30
Node.js 공부. 1  (1) 2024.04.26