Angular2에서 비동기 코드의 호출 스택을 향상시킬 수있는 방법이 있습니까? 나는 항상 setTimeout(), 방출 된 이벤트, 약속 등의 실행 컨텍스트를 추적하는 것이 Zone의 장점 중 하나라고 생각 했습니까?Angular2 : 디버깅을위한 더 나은/더 깊은 영역 스택
나는 오류를 추적하는 것을 불가능하게 만드는 일반적인 시나리오를 보여주는 엄청난 예제를 만들었습니다.
나는 다음과 같은 예제 시나리오가 있습니다@Component({
selector: 'my-component',
template: `
<div>
<button (click)="doSmth()">Cause an async error!</button>
</div>
`
})
export class MyComponent {
@Output() error = new EventEmitter<any>(true);
public doSmth(): void {
this.error.emit('Oh snap!');
}
}
@Component({
selector: 'my-app',
template: `
<div>
<my-component (error)="handleError($event)"></my-component>
</div>
`,
})
export class App {
private error = "";
public handleError(reason: any): void {
Promise.reject(reason)
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App, MyComponent ],
bootstrap: [ App ]
})
export class AppModule {}
Plunker : "오 스냅"https://embed.plnkr.co/rnkxRH9G0FzA3DcBHfKO/
이 잘린 비동기 오류가 발생을 버튼을 클릭하면 이 오류는 처리되지 않은 Promise 거부가 발생하는 App 구성 요소에서 처리되는 EventEmitter를 통해 발생합니다. 내가 지금 얻을
호출 스택은 다음과 같습니다 : 나에게 더 복잡한 응용 프로그램에서 실제 오류 트리거 기원을 추적 할 기회를주지 않았
Error: Oh Snap!
at resolvePromise (zone.js:538)
at Function.ZoneAwarePromise.reject (zone.js:594)
at App.handleError (app.ts:34)
at DebugAppView._View_App0._handle_error_3_0 (App.ngfactory.js:82) //not my file
at eval (core.umd.js:12718)
at eval (core.umd.js:9180)
at ZoneDelegate.invokeTask (zone.js:356)
at Object.onInvokeTask (core.umd.js:9236)
at ZoneDelegate.invokeTask (zone.js:355)
at Zone.runTask (zone.js:256)
합니다.
또한 "long-stack-trace-zone"스크립트를 임베드했습니다.이 스크립트는 전혀 효과가 없습니다.
질문 : 더 나은 존 스택 트레이스를 얻으려면 어떻게해야합니까? 아니면 전혀 가능합니까?
미리 감사드립니다.