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() 方法时,不会触发拦截器的再次调用,从而避免了无限请求循环的问题。

相关内容

热门资讯

玩家必看教程!wepoker买... 玩家必看教程!wepoker买钻石有用吗,werplan怎么作弊,AI教程(有挂教程);致您一封信;...
如何分辨真伪!wepoker怎... 此外,数据分析德州(wepoker怎么设置透视)辅助神器app还具备辅助透视行为开挂功能,通过对客户...
必备教程!xpoker辅助神器... 必备教程!xpoker辅助神器,wepoker辅助器有哪些功能,科技教程(有挂方法);致您一封信;亲...
科技通报!aapoker破解侠... 科技通报!aapoker破解侠是真的吗,epoker透视,介绍教程(有挂神器)关于aapoker破解...
推荐十款!约局吧透视挂下载,约... 推荐十款!约局吧透视挂下载,约局吧德州真的有透视挂吗,扑克教程(有挂神器)准备好在约局吧德州真的有透...
攻略讲解!pokemmo手机版... 攻略讲解!pokemmo手机版脚本,hhpoker透视脚本视频,解密教程(有挂软件)是一款可以让一直...
分享实测!wepoker有什么... 分享实测!wepoker有什么规律,hardrock作弊,可靠教程(有挂软件)是由北京得wepoke...
交流学习经验!wepoker底... 交流学习经验!wepoker底牌透视,wepoker网页版透视方法,存在挂教程(有挂教程)关于wep...
发现玩家!德普之星辅助器,we... 1、发现玩家!德普之星辅助器,wepoker手机插件,曝光教程(有挂技巧);详细教程。2、德普之星辅...
一起来讨论!德州局透视脚本免费... 一起来讨论!德州局透视脚本免费版下载手机版,wepoker私人局俱乐部,AA德州教程(有挂技巧);致...