코드:
으아악Firefox에서는 Reject만 출력되지만 Chrome에서는 정상적으로 입력하면 Uncaught(약속 있음)이 나타납니다
죄송하지만 p의 catch는 왜 명확하게 정의되어 있고, Firefox에서는 왜 출력 거부만 하고, p를 출력하는 작업은 아무런 효과가 없는 걸까요(사실은 catch되지 않은 예외로 인해 발생해야 합니다)
보충:
잡히지 않는 예외의 이유는 두 번째 함수가 then에 정의되어 있지 않더라도 여전히 실행되고 있고 반환된 새 Promise 객체에 원인과 상태가 전달되기 때문입니다. 반환된 Promise 객체에는 catch 콜백이 없습니다. 그래서 예외가 보고됩니다
하지만 Firefox에서 p를 출력해도 효과가 없는 이유는 아직 명확하지 않습니다
으아악
Promise는 표준과 동일합니다. 표준을 준수하는 모든 프로토타입은 Promise라고 부를 수 있습니다. 브라우저마다 표준 이외의 다른 기능이 있을 수 있습니다. 분명히 Firefox는 .catch와 .then을 별도로 선언한 다음 런타임에 선언할 수 있다고 믿습니다. 응답, 즉 위에서 언급한 대로 오류가 보고되지 않으며 Google에서는 .catch가 .then의 예외와 함께 처리되어야 한다고 생각하므로 .then 이후의 Promise에 적용해야 합니다. .then().catch를 함께 사용하면 Google은 오류를 보고하지 않습니다. 근본적인 이유는 하나는 이벤트를 기반으로 하고 다른 하나는 폴링을 기반으로 하기 때문일 수 있습니다.