function add5(num) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(num + 5);
resolve(num + 5);
}, 2000)
})
}
Promise.all(
[add5(1), add5(2), add5(3)]
).then(result => {
console.log(result)
})
// [6,7,8]
여러가지 비동기 작업을 병렬로 처리하고 싶을 때 사용하는 것이 Promise.all이다. 배열로 인자를 주게되면, 배열에 있는 모든 Promise들이 거의 동시에 트리거된다.
즉, 위 코드는 add5를 3개 실행하여 총 6초가 걸리는 것이 아니라 2초만에 3개의 비동기 작업이 완료된다.
그리고 결과값은 배열로, Promise 순서대로 담기게 된다.
function add5(num) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(num + 5);
resolve(num + 5);
}, 2000)
})
}
Promise.race(
[add5(1), add5(2), add5(3)]
).then(result => {
console.log(result)
})
// 6
반면에 race는 배열로 받은 Promise중 가장 빨리 응답을 받은 결과만 resolve한다. (모든 Promise가 실행되긴한다.)
이는 에러가 발생할 때에도 마찬가지이다. 모든 프로미스가 실행되나, 가장 빨리 응답한 에러만 다음 구문으로 넘어갈 수 있다.
'개발 > FrontEnd Interview' 카테고리의 다른 글
Chrome console.log 텍스트에 color 를 적용하는 법 (0) | 2021.04.13 |
---|---|
굳이 requestAnimationFrames를 사용하는 이유는? (0) | 2021.04.11 |
Promise란 무엇이고, 왜 등장하게 되었는가 (0) | 2021.04.09 |
마이크로 태스크 큐란? (0) | 2021.04.08 |
IIFE와 클로저 (수정중) (0) | 2021.04.08 |
Uploaded by Notion2Tistory v1.1.0