> 웹 프론트엔드 > JS 튜토리얼 > 연결된 약속이 때때로 거부를 무시하는 이유는 무엇입니까?

연결된 약속이 때때로 거부를 무시하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-12 15:56:10
원래의
433명이 탐색했습니다.

Why Do Chained Promises Sometimes Ignore Rejections?

거부 시 전달되지 않는 연결된 약속

이전 Promise에 대한 의도된 종속성에도 불구하고 연결된 Promise는 오류 전파에 실패할 수 있습니다. 이 동작은 혼란스러울 수 있지만 Promises/A의 특성에 뿌리를 두고 있습니다.

오해: 체인 종속성

오해는 각각이 이전 항목에 대한 종속성을 암시한다는 것입니다. 약속의 성공적인 해결. 그러나 그렇지 않습니다.

Promise Chaining

Promise Chaining에서는 then의 콜백 함수 결과가 후속 Promise의 해결이 됩니다. 따라서:

  • 콜백이 약속을 반환하면 새 약속이 체인에 동화됩니다.
  • 콜백이 약속을 반환하지 않거나 정의되지 않은 값을 반환하는 경우 해당 값이 직접 전달됩니다. 다음 약속의 콜백으로.

처리 거부

then 콜백에서 오류가 발생하거나 거부된 Promise는 다음 Promise의 catch 또는 오류 콜백을 트리거합니다. 그러나 콜백 내에서 오류가 처리되면 Promise가 성공적으로 해결된 것처럼 체인이 진행됩니다.

예:

다음 코드를 고려하세요.

let promise1 = Promise.resolve(42);
let promise2 = promise1.then(
  (value) => value * 2,
  (err) => {
    console.error('Error in promise1:', err);
    // Handle the error (e.g., return a new promise)
  }
);
promise2.then((value) => console.log('Value from promise2:', value));
로그인 후 복사

이 예에서 promise1이 거부되면 해당 오류 핸들러는 오류를 기록한 다음 기본값을 반환합니다. 이를 통해 promise2는 promise1로부터 성공적인 응답을 받은 것처럼 진행할 수 있습니다.

Application to Database Updates

데이터베이스 업데이트 예에서 db.query의 오류 then 콜백에서 처리되며 기본값이 제공됩니다. 이를 통해 db.query가 실패하더라도 후속 콜백을 계속 진행하고 데이터베이스 업데이트를 계속 수행할 수 있습니다.

모범 사례

일관적인 오류 처리를 보장하려면 다음을 고려하세요. 다음 모범 사례:

  • catch 또는 try-catch와 함께 명시적인 오류 처리를 사용하여 거부 처리 일관되게.
  • 오류가 체인으로 전파되는 것을 방지하고 적절한 처리를 보장하려면 오류 처리기에서 거부된 Promise를 다시 던지거나 반환합니다.
  • Promise.all()을 사용하여 여러 Promise에서 오류를 집계하고 처리합니다. 한곳에 모아두세요.

위 내용은 연결된 약속이 때때로 거부를 무시하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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