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 |