AsyncPipe在Eventsource关闭后仍显示加载模板。
创始人
2024-09-21 08:30:13
0

一种解决方法是使用RxJS的takeUntil操作符,在EventSource关闭时取消订阅流。以下是一个示例:

import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';

@Injectable()
export class MyService {
  private destroy$: Subject = new Subject();

  constructor() {}

  getData(): Observable {
    return new Observable(observer => {
      const eventSource = new EventSource('http://localhost:8080/api/data');
      eventSource.onmessage = event => {
        observer.next(event.data);
      };
      eventSource.onerror = error => {
        observer.error(error);
      };
      return () => {
        console.log('Closing EventSource...');
        eventSource.close();
      };
    }).pipe(
      takeUntil(this.destroy$)
    );
  }

  ngOnDestroy() {
    this.destroy$.next(true);
    this.destroy$.unsubscribe();
  }
}

在上面的代码中,我们使用了一个Subject来跟踪组件或服务的销毁。我们使用takeUntil操作符来在销毁时取消订阅流。在这个例子中,我们展示了如何使用Observable来订阅EventSource对象,然后在组件或服务的ngOnDestroy方法中调用destroy$的next和unsubscribe方法来销毁这个对象。这样就可以避免Async Pipe在EventSource关闭后仍然显示加载模板的问题。

相关内容

热门资讯

德扑ai怎么系统!德扑牌型胜率... 1、德扑ai怎么系统!德扑牌型胜率计算,德扑线上房间果然是有挂(详细手牌教程)。2、透视辅助简单,软...
aapoker有猫腻!aapo... aapoker有猫腻!aapoker俱乐部,(aapoker外挂)本来是真的有挂(详细挂教程)科技教...
wepoke辅助机器人!wop... wepoke辅助机器人!wopoker辅助(Wepoke规律)本来真的是有挂(详细黑科技教程);1分...
wepok软件透明挂!wepo... wepok软件透明挂!wepoke脚本(德州版Wepoke)确实真的是有挂(详细计算辅助教程)1、让...
aapoker猫腻!aapok... aapoker猫腻!aapoker安卓怎么下载,(aapoker辅助)果然是有挂(详细透视辅助教程)...
wepoke计算辅助!wepo... wepoke计算辅助!wepower有辅助器吗(weopke真的有挂)果然是真的有挂(详细辅助德之星...
德扑之星猫腻!德扑软件决策,德... 德扑之星猫腻!德扑软件决策,德扑之星决策总是真的有挂(详细辅助教程);德扑之星猫腻黑科技是一款具有i...
微扑克ai机器人!德州微扑克辅... 微扑克ai机器人!德州微扑克辅助透视,(微扑克开发)真是真的有挂(详细ai辅助工具教程);亲真的是有...
微扑克游戏辅助器!微扑克真的有... 1、微扑克游戏辅助器!微扑克真的有挂吗,(微扑克微乐)一直是真的有挂(详细全自动机器人教程)。2、微...
aapoker透明挂!aapo... aapoker透明挂!aapoker辅助软件,(aapoker俱乐部后台)一贯有挂(详细透视辅助教程...