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关闭后仍然显示加载模板的问题。

相关内容

热门资讯

微扑克wpk透视辅助!微扑克a... 微扑克wpk透视辅助!微扑克ai人工智能,wpk微扑克辅助透视(果然真的是有挂),您好,微扑克这款游...
教程辅助!六瓣数字消有外挂吗(... 教程辅助!六瓣数字消有外挂吗(透明挂)确实是真的有挂(2024已更新)(哔哩哔哩)1、不需要AI权限...
wepoke辅助机器人!wep... wepoke辅助机器人!wepoke辅助器真的有用,wepoke是机器发牌,高科技教程(有挂辅助)1...
2分钟了解!七彩云南游戏有外 ... 2分钟了解!七彩云南游戏有外 挂吗,边锋干瞪眼有外挂吗,透明教程(有挂普及)1、超多福利:超高返利,...
微扑克ai辅助!微扑克ai辅助... 微扑克ai辅助!微扑克ai辅助工具(透明挂)其实是真的有挂1、金币登录送、破产送、升级送、活动送。详...
推荐一款!青龙大厅外 挂是真的... 推荐一款!青龙大厅外 挂是真的吗(辅助)都是真的有挂(2022已更新)(哔哩哔哩)青龙大厅外 挂是真...
wepoke插件!wepoke... wepOkE赢率提升策略‌;wepoke插件!wepoke小技巧(辅助挂)wepOkE(果然真的有挂...
2分钟了解!福建兄弟十三水ap... 2分钟了解!福建兄弟十三水app有挂吗,兴动互娱辅助器,必胜教程(有挂揭秘);福建兄弟十三水app有...
微扑克ai辅助!微扑克ai辅助... 一、微扑克简介了解软件请加微:136704302微扑克是一款在线扑克游戏平台,玩家可以在平台上进行多...
专业讨论!胡乐麻将专用神器(透... 专业讨论!胡乐麻将专用神器(透明挂)一贯真的有挂(2026已更新)(哔哩哔哩)1、胡乐麻将专用神器系...