我有一些组件和模块,在这些组件中我做了一些异步请求。是否可以捕获从整个应用程序的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中捕获这些承诺?
答案 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);
}