在应用程序中捕获所有承诺

时间:2017-11-08 04:01:00

标签: angular

我有一些组件和模块,在这些组件中我做了一些异步请求。是否可以捕获从整个应用程序的promises到主要组件的所有回调?

例如: 第一部分有承诺

Activity.component.ts
...
ngOnInit(){
  this.checkActivity()
}
    private checkActivity(): void {
        this.http.get(this.url, {headers: this.headers})
            .toPromise()
            .then( response => {

            })
...

并且第二个组件有一个承诺:

ads.component.ts
...
ngOnInit(){
  this.load()
}
        private load(): void {
            this.http.get(this.url, {headers: this.headers})
                .toPromise()
                .then( response => {

                })
...

我怎样才能在app.component.ts中捕获这些承诺?

1 个答案:

答案 0 :(得分:3)

告知主要组件每个被拒绝的承诺的一种方法是使用服务:

  • 您将主要组件注册为服务回调
  • 您通知服务每个被拒绝的承诺

一个很好的实现将是Observables,但是一个非常简单的实现可以在每个承诺中执行此操作:

private checkActivity(): void {
    this.http.get(this.url, {headers: this.headers})
        .toPromise()
        .then(response => ...)
        .catch(err => myService.notifyRejectedPromsie(err));
}

在你的主要组成部分:

myService.registerCallback(err => console.log(`Main component got ${err}`));

该服务的实施将是:

public registerCallback(callback) {
    this.callback = callback;
}

public notifyRejectedPromsie(err) {
    this.callback(err);
}