>  기사  >  웹 프론트엔드  >  `Promise.all()`은 확인된 값의 순서를 유지합니까?

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

DDD
DDD원래의
2024-11-04 05:22:29955검색

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

Promise.all: 확인된 값의 순서 유지

Promise.all() 메서드는 반복 가능 항목을 인수로 사용하고 새 항목을 반환합니다. iterable의 모든 promise가 해결되면 해결되는 promise입니다. 질문이 생깁니다: 확인된 값의 순서가 iterable의 약속 순서와 일치하는 것이 보장됩니까?

MDN 문서에 따르면 확인된 값은 약속의 순서로 나타나야 합니다. 그러나 이 특정 동작에 대한 직접적인 참조는 사양에서 즉시 명확하지 않습니다.

사양을 더 자세히 살펴보면 PerformPromiseAll()이 Promise.all()에 전달된 반복 가능 항목을 통해 호출된다는 것을 알 수 있습니다. 그런 다음 PerformPromiseAll()은 Promise의 순서를 보장하는 IteratorStep()을 사용하여 반복 가능 항목을 반복합니다.

또한, 해결된 각 Promise에는 원래 입력 반복 가능 항목의 인덱스를 나타내는 내부 [[Index]] 슬롯이 있습니다. 이 슬롯은 확인 프로세스 중에 출력 배열이 원래 순서를 유지하는지 확인하는 데 사용됩니다.

요약하면 Promise.all()에서 확인된 값의 순서는 입력이 유지되는 한 엄격하게 유지됩니다. iterable이 주문되었습니다. 이는 다음 코드 조각에 예시되어 있습니다.

<code class="js">const slow = new Promise(resolve => setTimeout(resolve, 200, 'slow'));
const instant = 'instant';
const quick = new Promise(resolve => setTimeout(resolve, 50, 'quick'));

Promise.all([slow, instant, quick]).then(responses => {
  responses.map(response => console.log(response));
});

// Output: [ 'instant', 'quick', 'slow' ]</code>

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

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