본문 바로가기

코딩도 합니다/JS

[자바스크립트 js] promise 객체 종류



  all 메소드

  • 여러 promise 객체의 작업 성공 결과를 기다렸다가 모두 한번에 취합하기 위해서 사용한다.
  • 만약 하나의 promise 객체라도 rejected 상태가 되면, 전체 작업이 실패한 것으로 간주할 때 사용한다.
    => 이러한 상황에 대비하려면 catch 메소드를 붙여주면 된다.
  • then 메소드처럼 새로운 promise 객체를 리턴한다.
  • 아규먼트로 들어온 배열 안에 있는 모든 promise 객ㅊ체가 pending 상태에서 fulfilled 상태가 될 때까지 기다린 후에, 모든 promise 객체들이 fulfilled 상태가 되면 all 메소드가 리턴했던 promise 객체는 fulfilled 상태가 된다.
  • 각 promise 객체의 작업 성공결과들로 이루어진 배열을 그 작업 성공 결과로 갖게 된다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

 

Promise.all() - JavaScript | MDN

The Promise.all() method takes an iterable of promises as an input, and returns a single Promise that resolves to an array of the results of the input promises. This returned promise will resolve when all of the input's promises have resolved, or if the in

developer.mozilla.org

 

 

 

 

  race 메소드

all 메소드와 마찬가지로 여러 promise 객체들이 있는 배열을 아규먼트로 받는다.

아규먼트로 들어온 배열의 여러 promise 객체들 중에서 가장 먼저 fulfilled 상태 또는 rejected 상태가 된 promise 객체와 동일한 상태와 결과를 갖게 된다.

말 그대로 race 메소드는 여러 promise 객체들을 경쟁시켜서 가장 빨리 상태가 결정된 promise 객체를 선택하는 메소드다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race

 

Promise.race() - JavaScript | MDN

The Promise.race() method returns a promise that fulfills or rejects as soon as one of the promises in an iterable fulfills or rejects, with the value or reason from that promise.

developer.mozilla.org

 

 

 

 

  allSettled 메소드

  • settled : fulfilled 상태와 rejected 상태를 묶어서 settled 상태라고 한다.
  • 배열 속 promise 객체들이 settled 상태가 되기만 하면 된다.
  • 각 메소드가 리턴한 promise 객체가 A라고 할 때,
    배열 내의 모든 promise 객체가 fulfilled 또는 rejected 상태갇 되기까지 기다린 후에,
    pending 상태의 promise 객체가 하나도 없게 되면,
    A의 상태값은 fulfilled 상태가 되고 그 작업 성공 결과로 하나의 배열을 갖게 된다.
  • 이 배열에는 아규먼트로 받았던 배열로 인한 요소들이 들어있다.
    1) 최종 상태를 status 프로퍼티,
    2) 그 작업 성공 결과는 value 프로퍼티,
    3) 그 작업 실패 정보는 reason 프로퍼티

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled

 

Promise.allSettled() - JavaScript | MDN

The Promise.allSettled() method returns a promise that resolves after all of the given promises have either fulfilled or rejected, with an array of objects that each describes the outcome of each promise.

developer.mozilla.org

 

 

 

 

  any 메소드

  • 배열 속의 promise 객체 중 단 하나라도 fulfilled 상태가 되면 된다.
  • 각 메소드가 리턴한 promise 객체가 A라고 할 때, promise 객체들 중에서 가장 먼저 fulfilled 상태가 된 promise 객체의 상태와 결과가 A에도 똑같이 반영된다.
  • 만약 모든 promise 객체가 rejected 상태가 되면, AggregateError라고 하는 에러를 작업 실패 정보로 갖고 rejected 상태가 된다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any

 

Promise.any() - JavaScript | MDN

Promise.any() takes an iterable of Promise objects and, as soon as one of the promises in the iterable fulfills, returns a single promise that resolves with the value from that promise. If no promises in the iterable fulfill (if all of the given promises a

developer.mozilla.org

 

728x90