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

相关内容

热门资讯

透视实锤"wejok... 透视实锤"wejoker开挂"详细辅助细节方法(插件下载软件);亲真的是有正版授权,小编(透视辅助软...
透视规律"pokem... 透视规律"pokemmo免费脚本"详细辅助详细教程(透视最简单三个步骤神器)1、不需要AI权限,帮助...
透视美元局"wepo... 透视美元局"wepoker透视破解版"详细辅助2025新版教程(私人局辅助透明);wepoker透视...
透视存在"wepok... 1、透视存在"wepoker私人局辅助"详细辅助AI教程(免费脚本咨询神器)。2、wepoker私人...
透视计算"wepok... 透视计算"wepoker辅助脚本"详细辅助微扑克教程(htx矩阵辅助辅助);1.wepoker辅助脚...
辅助透视"poker... 辅助透视"poker world辅助"详细辅助2025新版(脚本技巧)1、玩家可以在poker wo...
辅助透视"wpk模拟... 辅助透视"wpk模拟器多开"详细辅助力荐教程(辅助是真的辅助)1、许多玩家不知道wpk模拟器多开辅助...
透视透视"来玩德州破... 透视透视"来玩德州破解器"详细辅助扑克教程(俱乐部辅助技巧)1、玩家可以在来玩德州破解器软件透明挂俱...
辅助透视"拱趴大菠萝... 辅助透视"拱趴大菠萝挂"详细辅助曝光教程(究竟有透视神器);1分钟了解详细教程(微信 1367043...
透视游戏"wepok... 透视游戏"wepoker有辅助功能吗"详细辅助AA德州教程(透视脚本神器);科技安装教程;13670...