Promise를 값으로 다루고 반복자 패턴과 조합하여 비동기 실행 순서를 제어하는 방법
비동기와 동시성 제어에 강점을 보이는 함수형 패러다임과 타입 시스템을 적용
Promise는 비동기 작업의 결과를 값으로 다룰 수 있도록 하는 객체 또는 규약이다.
리스트 프로세싱과 함께 사용하면 복잡한 비동기 로직을 손쉽고 안전하게 제어할 수 있다.
new Promise를 직접 사용해본다는 것은 비동기 제어에 대한 이해와 문제 해결 능력을 높일 수 있다는 뜻이다.
병렬로 실행된 여러 Promise 중 가장 먼저 완료된 Promise의 결과나 에러를 반환하는 함수
const promise1 = new Promise((resolve) => setTimeout(resolve, 500, 'one'))
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, 'two'))
await Promise.race([promise1, promise2]).then(res => {
console.log(res) // two가 출력.
})