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/