Promise - 병렬처리

jeonbang123·2022년 8월 19일
0

promise

목록 보기
2/3

병렬처리 - 정의시, 요청을 각자보내고 (await x) 가장 늦은 응답이 오면 처리됨

promise 병렬처리 - Promise.all()
resolve된 value들을 배열로 리턴한다.
한개라도 reject되면 error를 리턴한다.

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});
const promise4 = new Promise((resolve, reject) => {
  setTimeout(reject, 1000, 'qoo');
});

Promise.all([promise1, promise2, promise3, promise4]).then((values) => {
  console.log(values);
});
// expected output: Array [3, 42, "foo"]

promise 병렬처리 - Promise.allSettled()
결과에 상관없이 Promise들을 배열로 리턴한다.

const promise1 = Promise.resolve(3);
const promise2 = Promise.resolve(4);
const promise9 = new Promise((resolve, reject) => setTimeout(() => reject('foo'), 100));
const promise10 = new Promise((resolve, reject) => setTimeout(() => resolve('foo'), 10000));

const allSettled = Promise.allSettled([promise1, promise2, promise9, promise10]).then((result) => {
  console.log('result', result)
  
  const fulfilled = result.filter(data => data.status === 'fulfilled')
  						.map(data => data.value); // fulfilled >> value
  const rejected = result.filter(data => data.status === 'rejected')
  						.map(data => data.reason); // rejected >> reason  
  
  console.log('fulfilled', fulfilled);
  console.log('rejected', rejected);
});

console.log('allSettled', allSettled)

profile
Design Awesome Style Code

0개의 댓글