Promise.race()

KIXIAM·2022년 12월 27일
1

TIL

목록 보기
18/22
post-thumbnail

Promise.race()

결과값이 resolve , reject 상관 없이 시간이 가장 짧은 함수가 레이스(race)에서 이기고 Promise값을 반환한다.

const promise1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 500, 'one');
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'two');
});

Promise.race([promise1, promise2]).then((value) => {
  console.log(value);
  // Both resolve, but promise2 is faster
});

결과값에는 관심이 없고 (어떤 것이 먼저 되든지 상관이 없고) 빠르게 실행되는 것만 찾기 위해서 활용할 수 있는 구문이다.


promise 1이 race에서 이겼을 때


promise 2가 race에서 이겼을 때


한번 읽어보면 좋을 코드

const p1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log('The first promise has resolved');
        resolve(10);
    }, 1 * 1000);
});
const p2 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log('The second promise has resolved');
        resolve(20);
    }, 2 * 1000);
});
Promise.race([p1, p2])
    .then(value => console.log(`Resolved: ${value}`))
    .catch(reason => console.log(`Rejected: ${reason}`));

output :

The first promise has resolved
Resolved: 10
The second promise has resolved

어떤 코드에 사용을 하면 좋을 지 고민해봐야겠다. 일단은 빠른 response를 원할 경우에 사용을 하면 좋을 것 같다.

참고한 사이트

https://www.javascripttutorial.net/es6/javascript-promise-race/

profile
Project Oriented Learning 🔥

0개의 댓글