[JavaScript]Promise에 대해서

김밍·2023년 4월 20일

Promise의 기능과 필요한 이유

Promise는 비동기로 작동하는 코드를 제어할 수 있는 방법이며, callback hell을 방지하는 역할도 합니다.
promise라는 개념은 자바스크립트 비동기 처리에 사용되는 객체로, promise를 사용하면 비동기 메서드에서 마치 동기 메서드처럼 값을 변환할 수 있습니다.
promise states는 pending(대기), fulfilled(이행), reject(실패)로 나뉩니다.

  • 대기는 비동기 처리 로직이 아직 완료되지 않은 상태를 의미
  • 이행은 비동기 처리가 완료되어 promise가 결과값을 반환해준 상태를 의미
  • 실패는 비동기 처리가 실패하거나 오류가 발생한 상태를 의미합니다.

promise는 .then(), .catch() 등 promiseAPI를 사용할 수 있어 코드의 양을 줄이고 가독성을 증가할 수 있습니다.

  • .then() : 코드들이 정상적으로 처리된 경우 resolve함수를 호출하고 .then()메서드로 접근할수있습니다.
  • .catch() : 작성했던 코드들이 에러가 발생했을때 reject함수를 호출하고 .catch()메서드로 접근할 수 있습니다.
  • .finally() : 코드들의 정상 처리 여부와 관계없이 접근할 수 있는 메서드입니다.
  • Promise Chaining : 비동기 작업을 순차적으로 진행해야 할때 필요합니다. 앞서 말한 .then(), .catch(), .finally()메서드들은 promise를 리턴합니다. 따라서 .then()메서드를 통해 연결할수있고 에러가 발생한 경우 .catch()로 처리해주면 됩니다.
  • promiseAll() : 여러개의 비동기 작업을 동시에 처리하고 싶을때 사용하며 인자로는 배열을 받습니다.
    코드들이 정상적으로 처리가 되었다면 결과를 배열에 저장해서 새로운 promise를 반환해줍니다.
    promiseAll은 비동기 작업을 동시에 처리하기때문에 작업 시간이 짧고 코드가 더 간결해집니다.

비동기(asychronous)란, 어떠한 요청을 보내면 그 요청이 끝날때까지 기다리는 것이 아니라 응답에 관계없이 바로 다음 동작이 실행되는 방식을 의미합니다.
동기(sychorous)란, 한 작업이 실행되는 동안 다른 작업은 멈춘 상태를 유지하고 자신의 차례를 기다리는 것을 의미합니다.

0개의 댓글