2015-01-05 3 views
0

지금까지 Parse.Promise, QBluebird을 시도했지만 비동기 런타임 오류를 처리/처리하기 위해 error 또는 catch 블록을 가져올 수 없었습니다.런타임 오류를 처리하는 javascript 약속 라이브러리가 있습니까?

위에서 언급 한 라이브러리 중 하나는,/캡처 비동기 런타임 오류를 처리하고 내가 제대로 내 샘플 코드를 작성하지 않았을 수 있음을 의심 할 수 있다고 생각되면, 실수 지적 주시기 바랍니다 그렇지 않으면 https://github.com/pulkitsinghal/example-promises

을 나는 다른 약속 라이브러리 또는 탐색 할 프레임 워크에 대한 제안을 찾고 있습니다.

+0

여기에 코드를 게시하고 어떤 오류가 잡힐 것으로 예상하십니까? – Bergi

+0

[Q.promises를 사용할 때 : 비동기 던지기를 잡는 방법?] (http://stackoverflow.com/a/15506719/1048572) – Bergi

+0

[Bluebird 약속에 의한 비동기 예외 처리] (http : // stackoverflow. com/q/25143476/1048572) – Bergi

답변

3

라이브러리은 통제 할 수없는 오류를 처리하는 것이 불가능합니다. 약속 라이브러리가 다른 약속을 동화시키기 위해 반환 값을 사용하기 때문에 라이브러리가 던져 질 수 있다는 유일한 이유가 있습니다.

모든 코드가 콜백 대신 약속을 반환하면 모든 A + promise 라이브러리 (예를 들어 Parse.promise가 아닌 Q와 Bluebird)가 런타임 오류를 catch하고 bluebird가 .catch 필요없이 자동으로보고합니다.

도메인은 더 이상 사용되지 않으며 실제로 잘 작동하지 않으며 노드 전체 솔루션이 없습니다. 귀하의 유일한 선택은 실제로 앱과 관련된 약속에 충실하는 것입니다. 은 던져 질 때 노드 코드의 일부가 잘 처리되지 않으므로 캐치되지 않는 예외에서 서버를 강제 종료하고 다시 시작해야합니다 (도메인이 시작되지 않는 이유 중 일부 임). 그래서

: 당신은 응용 프로그램 전반의 약속을 사용하는 경우

  • 약속 런타임 오류에 대한 던져 안전합니다.
  • 신뢰할 수없는 코드를 실행해야하는 경우 vm 모듈을 사용하여 VM에서 실행하는 것이 좋습니다.
  • 가끔 노드 오류가 발생하여 서버를 다시 시작할 수 밖에 없습니다.
  • Promisify at 최저 수준 가능 promisified function throwing을 피하십시오.

Here is a broader question that discusses async error-handling in NodeJS.