[JavaScript] 자바스크립트에서 Promise 병렬 처리하기
2022. 7. 30. 21:46ㆍProgram/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
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김
'Program > JavaScript' 카테고리의 다른 글
| [JavaScript] 자바스크립트에서 Promise 동적 직렬 처리하기 (0) | 2022.07.31 |
|---|---|
| [JavaScript] 자바스크립트에서 Promise 직렬 처리하기 (0) | 2022.07.31 |
| [JavaScript] 자바스크립트에서 Promise 성공/실패 처리하기 (0) | 2022.07.30 |
| [JavaScript] 자바스크립트에서 비동기화 Promise 사용하기 (0) | 2022.07.30 |
| [JavaScript] 자바스크립트에서 시간 주기 작업 해제하기 (0) | 2022.07.29 |