[JavaScript] 자바스크립트에서 Promise 병렬 처리하기

2022. 7. 30. 21:46Program/JavaScript

218_자바스크립트에서 Promise 병렬 처리하기

[적용]

  • 비동기 처리 일괄 시작 후 모든 처리가 끝나면 다음 작업을 시작하고 싶을 때

[문법]

메소드 의미 반환
Promise.all(배열) 다수의 Promise 병렬 실행  Promise

[내용]

Promise.all()을 사용하면 동시에 실행한 처리를 모두 끝내고 다음 작업을 시작하도록 지정할 수 있다.

 

Promise 인스턴스를 포함한 배열을 생성하여 Promise.all()의 인수로 전달한다.

모든 처리가 끝난 뒤 then()으로 지정한 함수를 호출한다.

병렬 처리는 배열의 순서대로 작업이 완료되지 않는다.

 

JavaScript                                                                                                                                                          main.js

// 배열 작성
const arrFunc = [];
for (let i = 0; i < 5; i ++) {
  const func = (resolve) => {
    console.log(`처리 ${i} 시작`, new Date().toLocaleTimeString());
    // 0~2초 지연
    const delayMsec = 2000 + Math.random();
    
    // 지연처리
    setTimeout(() => {
      console.log(`처리 ${i} 시작`, new Date().toLocalTimeString());
      resolve();
    }, delayMsec);
  };
  // 배열 저장
  arrFunc.push(func);
}

console.log(arrFunc);

// 함수를 포함한 배열을 PRomise 배열로 변환
const arrPromise = arrFunc.map((func) => new Promise(func));

conmsole.log(arrPromise);

// 병렬 처리 실행
Promise.all(arrPromise).then(() => {
  console.log('모든 작업이 완료되었습니다.');
});

 

 

 

 


 

 

 

 

 

참조 :
실무에 바로 적용하는 자바스크립트 코드레시피 278
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김