NATIVE

settings_applicationsObject

NATIVE

Editing
  • account_tree
  • bug_report

ObjectPromise

비동기 작업에서 미래의 완료 또는 실패와 그 결과 값을 다룬다.

설명

자바스크립트는 기본적으로 동기적으로 처리를 한다. 동기적 처리는 현재 실행하는 코드가 완료 되어야 다음 코드를 실행하는 것을 의미한다. 반면에 비동기적 처리는 현재 처리 중인 작업의 결과와 관계없이 다른 처리에 대한 요청을 실행할 수 있으며 별도의 프로세스로 관리되는 것을 의미한다.

이러한 처리가 필요한 경우는 네트워크 요청을 실행할 때이다. 네트워크의 상태는 직접 제어할 수 없는 외부의 환경적 요인이므로 즉각 응답을 기대하면서 로직을 구현하기는 어렵다. 따라서 네트워크 요청을 해놓고 다른 작업을 실행하는 것이 매우 바람직하다. 그리고 그 이후 요청이 완료되면 그 결과를 사용자에게 피드백하거나 사후 처리를 하면 된다.

물론 흐름상 네트워크 요청에 서버가 응답하고 그 이후에 실행 순서를 가져야 하는 경우가 있다. 이러한 경우도 서버의 응답을 무작정 기다리는 인터페이스는 좋지 않다.

어떠한 경우이든 네트워크 요청을 하면 즉각적인 응답을 기대하지 않고 로직을 구현하는 게 좋다. ES6에서 새로 추가된 Promise 객체는 비동기적 처리가 필요한 경우에 최상의 솔루션을 제공한다. 원래 DOM의 API로 추가되었으나 지금은 ECMAScript에 포함되었다. 따라서 ECMAScript 실행 환경이라면 비동기적 로직을 간편하게 구현할 수 있게 되었다.

Promise 객체는 요청에 대한 정보를 가지고 응답을 기다리는 미래의 시점에 대한 결과를 반환한다. Promise 객체는 다음 하나의 상태를 가진다.

  • 대기(Pending): 이행하거나 거부되지 않은 초기 상태
  • 이행(fulfilled): 연산(요청)이 성공적으로 완료된 상태
  • 거부(rejected): 연산(요청)이 실패한 상태

위와 같은 하나의 상태를 가질 때 Promise 객체의 then() 메소드의 스택에 추가된다.

하위 트리 탐색

  • Constructor

    Promise 객체를 생성하는 생성자를 나타낸다.

    • Promise()

      새로운 Promise 객체의 인스턴스를 생성하는 생성자 함수이다.

  • [[Prototype]]

    • Properties

      • @@species

        Promise 객체의 생성자를 조회한다.

    • Methods

      • catch()

        Promise가 거부(rejected) 상태일 때 호출될 함수를 지정한다.

      • finally()

        Promise가 완료(이행 또는 거부)될 때 호출할 함수를 지정한다.

      • then()

        비동기 작업을 이행(resolve)했을 때와 거부(reject)했을 때를 위한 콜백 함수를 지정하여 사후 처리를 할 수 있다.

  • Static

    정적(static) 멤버를 의미하며 인스턴스(instance)에 상속되어 사용할 수 없고 오로지 하위를 포함하여 객체(object) 또는 인터페이스(interface) 자신에서 해당 멤버에 접근이 가능하다. 

    • Methods

      • all()

        Promise 객체를 항목으로 갖는 반복 가능한 집합을 입력으로 사용하고 단일 Promise 객체를 반환한다.

      • allSettled()

        Promise 객체를 항목으로 갖는 반복 가능한 집합을 입력으로 사용하고 각각의 Promise 결과를 설명하는 객체를 입력 순서대로 원소로 갖는 배열을 반환한다.

      • any()

        Promise 객체를 항목으로 갖는 반복 가능한 집합을 입력으로 사용하고 하나 이상의 Promise가 이행되면 이행된 첫 번째 Promise 객체를 반환한다.

      • race()

        Promise 객체를 항목으로 갖는 반복 가능한 집합을 입력으로 사용하고 제일 먼저 이행된 Promise 객체를 반환한다.

      • reject()

        지정된 이유로 거부된 Promise 객체를 반환한다.

      • resolve()

        지정된 값에 따른 이행된 Promise 객체를 반환한다.

지원 웹브라우저