Angular 6: 在Http Interceptor中调用service observer.next会导致无限请求循环
创始人
2024-10-16 06:00:51
0

问题描述: 在 Angular 6 中,当在 Http Interceptor 中调用 service 的 observer.next() 方法时,可能会导致无限请求循环。

解决方法: 要解决这个问题,可以使用 Subject 来代替 Observer。

首先,在 service 中创建一个 Subject 对象,并在需要调用 observer.next() 的地方发送一个值:

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';

@Injectable()
export class DataService {
  private dataSubject = new Subject();
  public data$ = this.dataSubject.asObservable();

  constructor() {}

  public sendData(data: any): void {
    this.dataSubject.next(data);
  }
}

然后,在 Http Interceptor 中订阅这个 Subject,并在需要的时候调用 service 的 sendData() 方法:

import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
import { DataService } from './data.service';

@Injectable()
export class MyInterceptor implements HttpInterceptor {

  constructor(private dataService: DataService) {}

  intercept(req: HttpRequest, next: HttpHandler): Observable> {
    return next.handle(req).pipe(
      tap(event => {
        if (event instanceof HttpResponse) {
          // 处理响应数据
          this.dataService.sendData(event.body);
        }
      })
    );
  }
}

这样做的好处是,当调用 service 的 sendData() 方法时,不会触发拦截器的再次调用,从而避免了无限请求循环的问题。

相关内容

热门资讯

第8分钟辅助!中至余干如何破解... 第8分钟辅助!中至余干如何破解,本来真的是有辅助app(有人有挂)小薇(辅助器软件下载)致您一封信;...
第二分钟辅助!518互游私人定... 第二分钟辅助!518互游私人定制,确实是有辅助攻略(有挂透视)第二分钟辅助!518互游私人定制,确实...
第七分钟辅助!三七互娱辅助器透... 第七分钟辅助!三七互娱辅助器透视开挂,总是是真的有辅助器(有人有挂)1、三七互娱辅助器透视开挂公共底...
第九分钟辅助!微乐小程序黑科技... 第九分钟辅助!微乐小程序黑科技app入口,果然有辅助软件(有挂讲解)一、微乐小程序黑科技app入口可...
4分钟辅助!广东雀神智能插件安... 4分钟辅助!广东雀神智能插件安装辅助器,都是是真的有辅助挂(新版有挂)进入游戏-大厅左侧-新手福利-...
第8分钟辅助!上品斗地主游戏辅... 第8分钟辅助!上品斗地主游戏辅助,真是真的有辅助方法(有挂方法)1、操作简单,无需上品斗地主游戏辅助...
一分钟辅助!雀神智能插件安装价... 一分钟辅助!雀神智能插件安装价格,其实是真的有辅助器(有挂方略)一分钟辅助!雀神智能插件安装价格,其...
三分钟辅助!微乐小程序外辅助工... 三分钟辅助!微乐小程序外辅助工具,原来是有辅助技巧(有挂透明挂)进入游戏-大厅左侧-新手福利-激活码...
九分钟辅助!闲玩暗宝插件,原来... 九分钟辅助!闲玩暗宝插件,原来是真的有辅助app(证实有挂)1、下载好闲玩暗宝插件脚本下载之后点击打...
第三分钟辅助!情怀国粹麻将神器... 第三分钟辅助!情怀国粹麻将神器,其实是真的有辅助神器(有挂秘籍)1、许多玩家不知道情怀国粹麻将神器辅...