혼합 해상도로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!