Promise.all
and Promise.allSettled
는 여러 약속을 처리하는 데 사용되는 JavaScript의 두 가지 방법이지만 약속을 처리하는 방법과 결과가 다릅니다.
Promise.all
반복 할 수있는 약속을 취하고 반복 가능한 모든 약속이 해결되거나 거부하는 입력 약속을 즉시 거부 할 때 해결하는 단일 약속을 반환합니다. 반환 된 약속의 해결 된 값은 입력 약속의 해결 된 값의 배열이며, 반복 가능한 것과 동일한 순서입니다.
다른 한편으로, Promise.allSettled
또한 반복적 인 약속을 취하지 만 모든 약속이 해결되거나 거부 될 때까지 기다립니다. 반환 된 약속은 모든 입력 약속이 해결되면 (해결되거나 거부 됨) 일단 해결됩니다. 해결 된 값은 객체의 배열로, 각 객체는 반복 가능한 약속의 결과를 설명합니다. 각 객체에는 status
필드가 있는데, 이는 "fulfilled"
(해결 된 약속) 또는 "rejected"
(거부 된 약속)과 value
필드 (해결 된 약속의 경우) 또는 reason
필드 (거부 된 약속)와 함께 상태 필드가 있습니다.
요약하면, 주요 차이점은 이러한 방법이 약속 거부를 처리하는 방법에 있습니다. Promise.all
빠르게 실패하여 약속이 거부되는 즉시 거부하는 동안 Promise.allSettled
모든 약속이 스스로 해결되기 전에 해결되거나 거부 할 것을 기다립니다.
Promise.all
Promise.allSettled
과 다르게 약속 거부를 처리합니다. Promise.all
사용할 때, 반복 가능한 거부에 약속이 있으면 전체 Promise.all
즉시 거부됩니다. 거부 이유는 거부 된 첫 번째 약속의 이유가 될 것입니다. 이후의 약속은 결의 또는 거부 여부에 관계없이 Promise.all
상태에 영향을 미치지 않습니다.
대조적으로, Promise.allSettled
거부 된 약속을 만났을 때 거부하지 않습니다. 대신, 반복적 인 모든 약속이 해결되거나 거부 될 것을 계속 기다리고 있습니다. 모든 약속이 해결되면, Promise.allSettled
은 모든 약속의 결과를 설명하는 일련의 물체로 해결됩니다.
차이점을 설명하려면 세 가지 약속이있는 예를 고려하십시오. Promise.all
과 함께, 다른 두 약속이 이미 해결 되더라도 지연된 약속이 거부하자마자 약속은 거부 할 것입니다. Promise.allSettled
과 함께, 모든 약속은 결국 두 가지 약속이 해결되고 하나는 거부되었음을 나타내는 배열로 결국 해결 될 것입니다.
당신은 Promise.allSettled
사용하도록 선택할 것입니다 Promise.all
특정 시나리오는 다음과 같습니다.
Promise.allSettled
이상적입니다. 실패한 요청에 대한 오류를 처리하면서 성공적인 응답을 처리 할 수 있습니다.Promise.allSettled
전체 프로세스를 방해하지 않고 어떤 작업이 성공했는지 이해하는 데 도움이됩니다.Promise.allSettled
사용하여 사용 가능한 모든 데이터 및 오류 메시지를 표시하여 첫 번째 오류를 중지하지 않음으로써 사용자 경험을 향상시킬 수 있습니다.Promise.allSettled
디버깅 또는 모니터링 목적에 유용한 포괄적 인 결과를 제공합니다. Promise.all
사용하는 성능의 영향은 Promise.allSettled
사용하여 다음과 같이 요약 할 수 있습니다.
Promise.all
모든 약속이 빠르게 해결되면 결의가 더 빠를 수 있지만 약속이 거부되면 즉시 거부 할 수 있습니다. 이것은 추가 약속 처리를 중단하기 때문에 조기 거부가 바람직한 시나리오에서 유리할 수 있습니다. 반면에, Promise.allSettled
항상 모든 약속이 해결 될 때까지 기다릴 것입니다. 일부 약속이 거부하는 데 시간이 오래 걸리면 더 오래 걸릴 수 있습니다.Promise.all
ALL은 약속이 거부하자마자 처리를 중지하기 때문에 더 적은 리소스를 사용할 수 있습니다. Promise.allSettled
특히 일부 약속이 장기 실행되거나 자원 집약적 인 경우 더 많은 자원을 사용하여 모든 약속을 계속 처리 할 것입니다.Promise.all
사용하면 모두 단일 거부 만 처리하면 경우에 따라 오류 처리를 단순화 할 수 있습니다. Promise.allSettled
보다 복잡한 오류 처리 로직이 포함될 수있는 결과를 처리해야합니다.Promise.allSettled
모든 약속이 완료되도록 실행되도록합니다. 이것은 모든 약속의 결과가 필요한 시나리오에서 유리할 수 있지만, 일부 약속이 초기 실패 후 더 처리 할 필요가 없다면 불리 할 수 있습니다. 요약하면, Promise.all
특정 상황에서 모든 것이 더 빠르고 리소스 효율적 일 수 있지만, Promise.allSettled
처리 시간과 리소스 사용량 증가의 잠재적 비용으로보다 포괄적 인 결과를 제공합니다. 그들 사이의 선택은 응용 프로그램의 특정 요구 사항을 기반으로해야합니다.
위 내용은 약속과 약속의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!