all 안에 주어진 배열에 있는 모든 프로미스를 실행한 후에  그 결과를 배열에 있는 순서대로 반환

배열에 있는 요청 중 하나라도 reject 가 되면  다른 요청의 성공여부에 상관없이 전부 reject

 

코드 예시

//Promise.all( 순회가능한 객체/ 배열 ) 
const promise1 = Promise.resolve("Test Promise.all()");
const promise2 = 5;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
  
// Array ["Test Promise.all()", 5, "foo"]

 

await 를 3개를 사용한 것과 같은 결과를 보여주지만,

좀 더 복잡한 코드를 수행해야할 때는 Promise.all([promise1, ... ]) 이 더 빠르다.

 

사용하는 이유 및 상황

처리속도

만약에 await 를 이용하여 3개의 요청을 실행을 하면 각 요청이 순서대로 실행이된다.

 

하지만, Promise.all()을 이용하여 요청들을 실행하면

Promise.all() 안에 있는 요청들만  병렬로 실행되고 이 요청이 완성될때까지 다른 요청들은 실행 되지 않는다.

이로 인해 요청들을 수행하는데 소요되는 시간이 더 짧아지고 결과를 한꺼번에 처리 가능하다.

-  필요한 요소들을 한꺼번에 처리할 때 유리하다.

 

(사용되는 예시)

게시물을 생성할 때 -> hashtag 정보 검색/ 생성, 카테고리 정보 검색, 새로운 게시물 데이터 생성 필요

-> 3가지를 Promise.all() 을 이용하여 한번에 실행하고 그 결과들을 수집및 처리하여 db에 저장 

 

배열 속의 모든 프로미스의 결과가 필요한 경우

 

'프로그래밍 > JavaScript' 카테고리의 다른 글

[ JS ] 불변객체 immutable object  (1) 2024.05.11
[ JS ] Promise.allSettled 사용하는 이유  (0) 2024.05.06
[ JS ] Promise 설명  (0) 2024.05.05
[ JS ] 정렬 sort( )  (0) 2024.04.13
[JS] call, apply, bind  (0) 2024.03.06

+ Recent posts