> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 거부된 Promise를 포함하여 여러 Promise를 어떻게 처리할 수 있나요?

JavaScript에서 거부된 Promise를 포함하여 여러 Promise를 어떻게 처리할 수 있나요?

Susan Sarandon
풀어 주다: 2024-12-18 06:07:14
원래의
893명이 탐색했습니다.

How Can I Handle Multiple Promises, Including Rejected Ones, in JavaScript?

혼합 해상도로 Promise 처리

비동기 프로그래밍에서는 Promise 집합을 처리하는 것이 어려울 수 있습니다. 여러 네트워크 요청이 있고 그 중 하나가 실패할 가능성이 있는 시나리오를 생각해 보십시오. 기본적으로 Promise.all()은 하나의 Promise가 거부되는 즉시 오류와 함께 프로세스를 중단합니다. 모든 요청에서 응답을 캡처하려는 경우 이는 바람직하지 않을 수 있습니다.

Promise 라이브러리가 없는 패턴

Promise 라이브러리를 사용하지 않는 한 가지 솔루션은 각 Promise를 다음으로 래핑하는 것입니다. "반사" 기능. 이 함수는 원래 Promise의 값이나 오류로 해결되는 새로운 Promise를 반환하며 성공 또는 거부를 나타내는 "상태" 속성을 포함합니다.

const reflect = p => p.then(v => ({ v, status: "fulfilled" }),
                            e => ({ e, status: "rejected" }));
로그인 후 복사

그런 다음 각 Promise를 Reflect Promise 및 호출에 매핑할 수 있습니다. 매핑된 배열의 Promise.all():

var arr = [fetch('index.html'), fetch('http://does-not-exist')]

Promise.all(arr.map(reflect)).then(function (results) {
  var success = results.filter(x => x.status === "fulfilled");
});
로그인 후 복사

이 접근 방식을 사용하면 성공한 Promise와 거부된 Promise를 모두 처리할 수 있습니다.

내장 Promise.allSettled()

최신 브라우저와 JavaScript 환경에는 이제 유사한 기능을 제공하는 기본 Promise.allSettled() 메서드가 있습니다. 이는 각각 해당하는 원래 Promise의 상태와 값(이행된 경우)을 나타내는 결과 배열로 해결되는 Promise를 반환합니다.

위 내용은 JavaScript에서 거부된 Promise를 포함하여 여러 Promise를 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿