从http拦截器创建多个http调用

时间:2019-09-25 07:27:03

标签: angular typescript angular-material interceptor

是否可以在正在进行的http请求完成之前发出http请求(例如,:在正在进行的请求完成之前从服务器获取令牌/刷新令牌)。

我已经使用Angular 5 httpInterceptor实现了以下功能,但是我无法使用Angular 7做到这一点。

intercept(request: HttpRequest<any>,next: HttpHandler): Observable<HttpEvent<any>> {
            return Observable.fromPromise(this.handleAccess(request, next))
              .map(response => {
                console.log(response);

                this.globalService.showOrShowloadingModel("hide");
                return response;
              })
              .catch(error => {
                console.log("HTTP error", error);  
                return Observable.of(error);
              });
}

private async handleAccess(request: HttpRequest<any>,next: HttpHandler): Promise<HttpEvent<any>> {
        //logic to fire token api
        await this.globalService.validateAccessToken();
        return next.handle(request).toPromise();
}

1 个答案:

答案 0 :(得分:0)

您可以尝试使用ForkJoin。您可以使用ForkJoin调用多个Http请求。 首先,您必须从rxJs导入forkJOin。 然后     forkJoin( this._myService.makeRequest('Request One', 2000), this._myService.makeRequest('Request Two', 1000), this._myService.makeRequest('Request Three', 3000) )

它将同时调用这三个请求

相关问题