Angular上服务器发送事件会造成多次调用
创始人
2024-10-29 10:00:58
0

为了解决此问题,您可以添加“take(1)”操作符来在第一次触发时停止订阅。这将确保触发事件仅会进行一次请求。以下是示例代码:

import {
  Injectable,
  NgZone
} from '@angular/core';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class ServerSentEventsService {
  constructor(private ngZone: NgZone) {}

  getServerSentEvent(url: string): Observable {
    return Observable.create(observer => {
      const eventSource = new EventSource(url);

      eventSource.onmessage = event => {
        this.ngZone.run(() => observer.next(event));
      };

      eventSource.onerror = error => {
        this.ngZone.run(() => observer.error(error));
      };

      return () => {
        eventSource.close();
      };
    }).take(1);
  }
}

我们在Observable创建之后添加了“ .take(1) ”。这将关闭Observable,以便在第一次触发后不再调用它。

请注意,您需要从“Rxjs/Observable”导入“ take”操作符。

在这种情况下,我们没有必要再监听EventSource的“ onopen”事件,因为它实际上只会在首次订阅后发生。

相关内容

热门资讯

十分钟实锤!德扑之星禁止模拟器... 十分钟实锤!德扑之星禁止模拟器(辅助挂)透视辅助((2024已更新))(哔哩哔哩);十分钟实锤!德扑...
玩家必看科普!WepoKe外挂... 玩家必看科普!WepoKe外挂透明挂辅助脚本,微扑克有脚本,详细教程(揭秘有挂)-哔哩哔哩;玩家在微...
重大通报!wpk ai检测!其... 重大通报!wpk ai检测!其实真的有挂((2024已更新))(哔哩哔哩)是一款可以让一直输的玩家,...
3分钟科普!wpk俱乐部盈利模... 3分钟科普!wpk俱乐部盈利模式(透视)辅助透视((2021已更新))(哔哩哔哩)1、快速入门:当你...
一分钟揭秘!wpk透视辅助测试... 一分钟揭秘!wpk透视辅助测试!原来是真的有挂((2021已更新))(哔哩哔哩)是一款可以让一直输的...
玩家必看科普!鱼扑克app a... 1、玩家必看科普!鱼扑克app ai外挂透明挂辅助插件,wopoker真的有挂,详细教程(果真有挂)...
两分钟科普!来玩德州app辅助... 两分钟科普!来玩德州app辅助工具(辅助挂)透视辅助((2025已更新))(哔哩哔哩)是一款可以让一...
一分钟揭秘!wepoke小技巧... 一分钟揭秘!wepoke小技巧!其实是真的有挂((2022已更新))(哔哩哔哩);原来确实真的有挂(...
4分钟攻略!aa扑克辅助(辅助... 4分钟攻略!aa扑克辅助(辅助挂)透视辅助((2023已更新))(哔哩哔哩),您好,aa扑克辅助这款...
透视智能ai!aapoker安... 透视智能ai!aapoker安卓软件透明挂辅助机制,聚星扑克有挂,详细教程(揭秘有挂)-哔哩哔哩是一...