프로미스란?

프로미스 - 자바스크립트 비동기 처리에 사용되는 객체
프로미스, 콜백함수를 쓰지않고 일반적으로 함수들을 나열할시, 이전함수의 리턴이 없어도 다음함수가 실행되, 웹 API요청의 경우 오류가 생길수있다.

프로미스는 3개중 하나의 상태값을가진다

  • 대기: 이행하거나 거부되지 않은 초기 상태.
  • 이행: 연산이 성공적으로 완료됨.
  • 거부: 연산이 실패함.

대기 중인 프로미스는 값과 함께 이행할 수도, 어떤 이유(오류)로 인해 거부될 수 있다. 이행이나 거부될 때, 프로미스에 연결한 처리기는 그 프로미스의 then 메서드에 의해 대기열에 오른다. 이미 이행했거나 거부된 프로미스에 연결한 처리기도 호출하므로, 비동기 연산과 처리기 연결 사이에 경합 조건race condition은 없다.

속성

Promise.length

  • 값이 언제나 1인 길이 속성. (생성자 인수의 수)

Promise.prototype

  • Promise 생성자의 프로토타입을 나낸다.

메서드

Promise.all(iterable)

  • iterable 내의 모든 프로미스가 이행한 뒤 이행하고, 어떤 프로미스가 거부하면 즉시 거부하는 프로미스를 반환한다. 반환된 프로미스가 이행하는 경우 iterable 내의 프로미스가 결정한 값을 모은 배열이 이행 값이다. 반환된 프로미스가 거부하는 경우 iterable 내의 거부한 프로미스의 이유를 그대로 사용한다. 이 메서드는 여러 프로미스의 결과를 모을 때 유용하다.

Promise.race(iterable)

  • iterable 내의 어떤 프로미스가 이행하거나 거부하는 즉시 스스로 이행하거나 거부하는 프로미스를 반환한다. 이행 값이나 거부 이유는 원 프로미스의 값이나 이유를 그대로 사용한다.

Promise.reject()

  • 주어진 이유로 거부하는 Promise 객체를 반환한다.

Promise.resolve()

  • 주어진 값으로 이행하는 Promise 객체를 반환한다. 값이 then 가능한 (즉, then 메서드가 있는) 경우, 반환된 프로미스는 then 메서드를 따라가고 마지막 상태를 취한다. 그렇지 않은 경우 반환된 프로미스는 주어진 값으로 이행한다. 어떤 값이 프로미스인지 아닌지 알 수 없는 경우, Promise.resolve(value) 후 반환값을 프로미스로 처리할 수 있다.