"함께 시작한 작업은 함께 기다리되, 각 결과가 어느 자리에서 왔는지 잃지 마."
튜플 입력이면 튜플 결과
Promise.all([loadUser(), loadSettings()])의 입력이 고정된 튜플로 추론되면 결과도 [User, Settings]처럼 자리별 타입을 보존해. 구조 분해한 user와 settings가 각각 정확한 타입을 갖는 이유야.
병렬성은 호출 시점에서 시작된다
Promise를 만드는 함수가 즉시 작업을 시작한다면 배열을 만든 순간 요청들이 출발해. first와 second를 차례로 기다리면 순차 실행이야. Promise.all([first(), second()])로 기다리면 독립 작업을 겹쳐 실행할 수 있어.
하나의 거절과 나머지 작업
입력 중 하나가 거절되면 반환 Promise도 바로 거절돼. 모두의 성공과 실패를 각각 모아야 한다면 Promise.allSettled를 써.
순차 호출과 병렬 호출의 차이는 performance.now()로 직접 재 봐. 세 요청이 서로 의존하지 않는다면 Promise.all이 전체 대기 시간을 줄이면서 튜플 위치별 타입도 보존해.
Promise.all은 서로 독립적인 유한 작업을 병렬로 기다리고 결과의 자리를 보존하는 도구야. 동시성 한도와 취소 정책은 별도로 책임져.