NATIVE

settings_applicationsObject

NATIVE

Draft
  • account_tree
  • bug_report

ObjectPromise

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

설명

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

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

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

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

Promise는 요청후의 결과를 반환하지 않고 Promise를 반환해서 미래의 시점에 결과를 반환한다. Promise는 다음 하나의 상태를 가진다.

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

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

하위 트리 탐색

  • Constructor

    • Promise()

      새로운 비동기적 처리 인스턴스를 생성하는 생성자 함수이다.
  • Static

    정적 멤버
    • Methods

      • all()

        순회 가능한 객체에 주어진 모든 promise가 이행한 후, 혹은 promise가 주어지지 않았을 때 이행하는 Promise 객체를 반환한다.
  • [[Prototype]]

    생성자(constructor)를 가진 객체(object) 또는 인터페이스(interface)가 인스턴스(instance)를 생성할 때 상속할 수 있는 프로퍼티(property)와 메소드(method)를 가지고 있는 원형 객체를 참조하는 생성자의 은닉된 속성이다. 만약에 상속받은 객체(object) 또는 인터페이스(interface)가 존재한다면 상속한 객체(object) 또는 인터페이스(interface)의 [[Prototype]] 프로퍼티(property)와 메소드(method)를 추가적으로 사용할 수 있다.
    • Methods

      • then()

        Promise를 반환하고 비동기적 작업을 이행(resolve)했을 때와 거부(reject)했을 때를 위한 콜백 함수를 인수로 받는다.
    • Properties

버전 명세

  • ECMAScript 6(2015)

지원 웹브라우저