> 웹 프론트엔드 > JS 튜토리얼 > 약속은 어떻게 오류를 처리하고 체인을 통해 전파합니까?

약속은 어떻게 오류를 처리하고 체인을 통해 전파합니까?

Linda Hamilton
풀어 주다: 2024-12-04 04:12:16
원래의
170명이 탐색했습니다.

How Do Promises Handle Errors and Propagate Them Through a Chain?

Promise Chaining 및 오류 처리 이해

Promise는 개발자가 이를 함께 연결하고 오류나 결과를 전달할 수 있도록 하여 비동기 작업을 처리하기 위한 메커니즘을 제공합니다. 그러나 Promise가 오류를 효과적으로 활용하기 위해 어떻게 오류를 처리하는지 이해하는 것이 중요합니다.

Promise Chaining 및 오류 거부

제공된 예에서:

promise1.then(...)
promise2.then(...)
promise3.then(...)
로그인 후 복사

각각은 그렇지 않습니다. 이전 약속의 성공적인 해결에 대한 의존성을 암시합니다. 대신, 이는 이행 여부에 관계없이 이전 Promise의 해결에 대한 종속성을 의미합니다.

Promise의 오류 처리

오류 처리는 Promise에서 자동으로 처리되지 않습니다. 오류를 처리하려는 경우 각각에 오류 핸들러를 연결하는 것은 개발자의 책임입니다.

예제에서 promise1은 오류를 처리하지만 promise2와 promise3은 그렇지 않습니다. 따라서 d1이 오류와 함께 거부하면 promise1은 오류를 기록하고 이를 반환하지만 promise2와 promise3은 promise1의 오류 처리기(정의되지 않음) 결과를 받아 이를 이행된 promise로 처리합니다.

오류를 처리하려면 제대로 하려면 다음을 수행해야 합니다.

  • 각 then 작업에 오류 처리기를 명시적으로 연결합니다.
  • 다시 던지기 후속 Promise로 전파되어야 하는 경우 오류 처리기에서 오류를 처리합니다.
  • 또는 거부된 Promise를 반환하여 후속 Promise를 거부합니다.

Promise Chaining과 오류 전파

Promise Chaining이 자동으로 오류를 전파한다고 가정하는 것은 잘못된 것입니다. 오류가 명시적으로 처리되지 않고 다시 전파되지 않으면 후속 Promise는 오류를 수신하지 않습니다. 이것이 Promise에서 오류 핸들러가 필수적인 이유입니다.

오류 재전파의 예

오류를 올바르게 전파하려면 예를 다음과 같이 수정할 수 있습니다.

var d1 = d();

var promise1 = d1.promise.then(
    function(wins) { return wins;},
    function(err) { throw err;});
var promise2 = promise1.then(
    function(wins) { return wins;},
    function(err) { throw err;});
var promise3 = promise2.then(
    function(wins) { return wins;},
    function(err) { throw err;});

d1.reject(new Error());
로그인 후 복사

이 수정을 통해 오류는 체인을 통해 전파되고 모든 약속은 Reject.

결론

Promise가 오류를 처리하는 방법을 이해하는 것은 비동기 작업에서 효과적인 오류 처리에 매우 중요합니다. 오류 처리기를 명시적으로 연결하거나, 전파를 위해 오류를 다시 발생시키거나, 거부된 Promise를 반환하여 오류를 적절하게 처리하고 Promise 체인의 무결성을 유지하는 것이 중요합니다.

위 내용은 약속은 어떻게 오류를 처리하고 체인을 통해 전파합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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