gpt4 book ai didi

Angular 2 : Subscribe to all HTTP requests

转载 作者:太空狗 更新时间:2023-10-29 18:16:51 24 4
gpt4 key购买 nike

我正在使用 Angular2 构建一个网络应用程序。

是否可以在Angular2 每次发出HTTP 请求时执行一个函数?

这将用于检查是否需要刷新 JWT token 。

谢谢!

最佳答案

您可以使用自定义 Http 类,它提供组件或其他服务可以订阅的可观察对象,并在每次发出请求时发出一个事件

@Injectable() 
class NotifyingHttp extends Http {
requestSent:Subject = new Subject();
requestCompleted:Subject = new Subject();
constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions) {
super(_backend, _defaultOptions);
}

get(url: string, options?: RequestOptionsArgs) : Observable<Response> {
this.requestSent.next(url);
return super.get(newUrl, options)
.finally(response => this.requestCompleted.next(url));
}

post(...)
...
}

每个方法都需要以这种方式覆盖(get、post、...)

您可以创建一个共享模块,然后通过将其添加到 AppModule 的导入中来激活该模块:

@NgModule({
imports: [HttpModule],
export: [HttpModule],
providers: [
{provide: ConnectionBackend: useClass XhrBackend},
{provide: Http, useClass: NotifyingHttp}]
})
export class NotifyingHttpModule {}
@NgModule({
imports: [BrowserModule, NotifyingHttpModule],
declarations: [AppModule],
bootstrap: [AppModule]
})
export class AppModule {}

另见 Angular2 : The responses to HTTP get requests are being cached in IE

关于 Angular 2 : Subscribe to all HTTP requests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41023317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com