Promise.all / Promise.allSettled
본 글은 글쓴이가 꺼내보기 위함의 목적이 큰 글입니다 :)
Promise.all[ promises...]
- promise 함수를 한꺼번에 실행 할 수 있음.
- 실행한 promise 중 하나라도 reject가 나온다면 결과값이 하나도 나오지 않음.
- 하나 실패하면 전체 다 다시 시도해야함.
사용패턴
const promise1 = new Promise((reolve,reject) => {
return setTimeout(()=>{
return resolve(1)
},1000)
})
const promise2 = new Promise((reolve,reject) => {
return setTimeout(()=>{
return resolve(2)
},1000)
})
Promise.all([ promise1, promise2 ])
.then(results => {
console.log(results); // 결과값 : [1,2]
})
.catch(err =>{
console.log(err);
})
Promise.allSettled[promises...]
- promise 함수를 한꺼번에 실행 할 수 있음.
- 결과 값은 promise 배열 순서대로 나옴.
- 실행한 promise 중 reject가 나온것은 실패했다고, 성공한 것은 성공 한대로 결과값이 나옴.
- 값의 형태는 성공시 -
{status:"fulfilled", value:result}
, 실패시 -{status:"rejected", reason:error}
- 값의 형태는 성공시 -
- reject가 된것만 추릴 수 있어, 따로 실패한것만 분기처리(status 로 분기)하여 다시 시도할 수 있음.
- 구형 브라우저, node.js 에서는 폴리필이 필요함.
사용패턴
const promise1 = new Promise((reolve,reject) => {
return setTimeout(()=>{
return resolve(1)
},1000)
})
const promise2 = new Promise((reolve,reject) => {
return setTimeout(()=>{
return reject(new Error('error!!'))
},1000)
})
Promise.allSettled([ promise1, promise2 ])
.then(results => {
console.log(results);
// 결과값 : [{status: 'fulfilled', value: 1},{status: 'rejected', reason: 'error!!'}]
if (results.status == "fulfilled") {
// 성공했을 경우
}
if (results.status == "rejected") {
// 실패했을 경우
}
})
.catch(err =>{
console.log(err);
})
참고문헌
https://ko.javascript.info/promise-api
Author And Source
이 문제에 관하여(Promise.all / Promise.allSettled), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mangojang/Promise.all-Promise.allSettled저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)