获取角度 5 中未决 http 请求的总数

Posted

技术标签:

【中文标题】获取角度 5 中未决 http 请求的总数【英文标题】:Get total Nos of pending http requests in angular 5 【发布时间】:2018-03-05 11:32:33 【问题描述】:

如何获得 Angular5 中的待处理请求总数,例如 AngularJS 中的$http.pendingRequests

【问题讨论】:

可能重复:***.com/questions/46860458/… 【参考方案1】:

请注意,下面的代码是为 Angular 8 编写的。自 Angular 5 以来可能会有一些小的语法变化,但总体思路保持不变

首先创建一个http拦截器。您可能希望创建另一个 BehaviorSubject 持有请求计数的服务,以便能够在任何地方注入该服务并订阅计数器值。如果您有一个应用程序状态(即当您使用 ngrx 时),只需将计数器值保存在存储中。在任何地方注入拦截器将是一种非常糟糕的做法。

import 
  HttpEvent,
  HttpHandler,
  HttpInterceptor,
  HttpRequest,
 from '@angular/common/http';
import  Observable  from 'rxjs';
import  finalize  from 'rxjs/operators';

export class RequestCountHttpInterceptor implements HttpInterceptor 
  pendingRequestsCount = 0;

  intercept(
    request: HttpRequest<any>,
    next: HttpHandler,
  ): Observable<HttpEvent<any>> 
    this.pendingRequestsCount++;
    return next
      .handle(request)
      .pipe(finalize(() => this.pendingRequestsCount--));
  

接下来,您必须将其放入 AppModule 中的提供程序中(以确保整个应用程序中只有一个此拦截器实例)

import  HTTP_INTERCEPTORS  from '@angular/common/http';
...

@NgModule(
 ...
  providers: [
    ...
    
      provide: HTTP_INTERCEPTORS,
      useClass: RequestCountHttpInterceptor,
      multi: true,
    ,
  ],
  ...
)
export class AppModule 

就是这样。请求计数现在将在 HttpRequestCountInterceptor 的实例中(如上所述将其移至另一个服务或商店)。

【讨论】:

“保留计数器值”您的意思是调度和操作,并为任何传出和传入请求使用减速器?

以上是关于获取角度 5 中未决 http 请求的总数的主要内容,如果未能解决你的问题,请参考以下文章

http请求中的异步选项,角度为2

如果已经以相同的请求运行,则取消订阅/取消角度4中的现有HTTP / XHR调用

拦截器中的角度 http 请求时间

google play games:从邀请ID中获取请求的玩家总数

laravel - 从 http 请求中获取参数

如何使用标头、有效负载和正文制作 httpclient 获取请求?角度 API