>웹 프론트엔드 >JS 튜토리얼 >`Promise.all`은 확인된 값의 순서를 유지합니까?

`Promise.all`은 확인된 값의 순서를 유지합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-03 00:22:29627검색

Does `Promise.all` Preserve the Order of Resolved Values?

Promise.all: 해결된 값의 순서

JavaScript에서 Promise.all은 해결을 허용하여 Promise의 기능을 향상시키도록 설계되었습니다. 여러 약속을 동시에 수행합니다. Promise.all의 주요 측면 중 하나는 확인된 값이 콜백에 전달되는 순서입니다.

MDN 문서에 따르면 확인된 값의 순서는 입력 배열의 Promise 순서와 일치해야 합니다. 이는 해결하려는 첫 번째 약속의 값이 then() 콜백에 전달된 결과 배열의 첫 번째 위치에 놓이게 됨을 의미합니다.

이를 확인하기 위해 JavaScript Promise 사양을 자세히 살펴보겠습니다. "Promise.all(iterable)" 섹션 내에서 반복 가능한 Promise를 단일 Promise로 해결하는 단계를 찾을 수 있습니다. 중요한 세부 사항은 해결된 각 Promise에 대해 내부 [[Index]] 슬롯을 생성하는 4e단계에 있습니다. 이 슬롯은 원래 입력 배열의 Promise 인덱스를 명시적으로 표시합니다.

따라서 Promise.all 구현은 여러 Promise를 동시에 해결할 때 입력의 Promise 순서에 따라 출력이 엄격하게 정렬되도록 보장합니다. 정렬. 이 순서 보존은 입력 배열이 일관된 순서(예: 배열)를 유지하는 한 적용됩니다.

이를 설명하려면 다음 코드를 고려하세요.

<code class="js">const somePromises = [1, 2, 3, 4, 5].map(Promise.resolve);
Promise.all(somePromises).then(function(results) {
  console.log(results); // Expected result: [1, 2, 3, 4, 5]
});</code>

이 코드가 실행되면 해결된 값은 somePromises 배열의 Promise 순서대로 콘솔에 기록됩니다. Promise.all의 주문 보존 기능을 보여줍니다.

위 내용은 `Promise.all`은 확인된 값의 순서를 유지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.