Promise.race
Promise.race
메서드는 Promise.all
메서드와 동일하게 프로미스 요소를 갖는 배열드의 이터러블을 인수로 전달 받는다.
이말은 즉 fulfilled 상태가 되는 것을 기다리는 것이 아니라 가장 먼저 fulfilled 상태가 된 프로미스의 처리 결과를 resolve 하는 새로운 프로미스를 반환한다.
Promise.race([
new Promise((resolve) => setTimeout(() => resolve(1), 3000)),
new Promise((resolve) => setTimeout(() => resolve(2), 2000)),
new Promise((resolve) => setTimeout(() => resolve(3), 1000)),
])
.then(console.log) // 3
.catch(console.log);
])
Promise.race([
new Promise((_,reject) => setTimeout(() => resolve("Error 1"), 3000)),
new Promise((_,reject) => setTimeout(() => resolve("Error 2"), 2000)),
new Promise((_,reject) => setTimeout(() => resolve("Error 3"), 1000)),
])
.then(console.log)
.catch(console.log); // Error 3
])
Promise.all
동일하게 reject상태가 되면 에러를 전달하는 reject하는 프로미스를 즉시 반환한다.