如何取消订阅 forkJoin 返回的 Observable?

2023-12-19

在我的 Angular2-typescript 应用程序中,只有在所有并行 HTTP 调用完成后,我才使用 forkJoin 返回 Observable。

Issue:订阅回调无限期地持续执行

这是我的代码:

http.service

import {Http} from "@angular/http";

constructor (private _http: HTTP) {}

makeGetRequest(....) {
    return this._http.get(URL)
           .map (res => res.json)
           .toPromise();

我的服务

import {Observable} from "rxjs/Observable";
import {HttpService} from "http.service"

constructor (private _httpService: HttpService) {}

myMethod(): Observable<any[]> {
 return Observable.forkJoin(
            this._httpService.makeGetRequest(
                URL1
            ),
            this._httpService.makeGetRequest(
                URL2
            )
        )
}

我的组件

import MyService from "my.service";
import Subscription from "rxjs";

constructor (private _service: MyService) {}

mySub: Subscription;

ngOnInit() {
    this.mySub = this._service.myMethod.subscribe(data => {
         data.forEach(console.log(data));
         this.mySub.unsubscribe();
     }
}

我尝试过的(同样的问题):

  • 在 Http.service 中返回 Observable 而不是 Promise
  • 在 my.component 中使用 .first().subscribe() 而不是仅仅 subscribe()
  • 把 this.mySub.unsubscribe();在 ngOnInit 的末尾而不是在 subscribe 回调中(也使用 setTimeout(() => ....))

As forkJoin参考 https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.md说,它

并行运行所有可观察序列并收集它们的最后元素。

这意味着该运算符从已完成的可观察量中获取值,并返回具有单个值的已完成可观察量。无需取消订阅。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何取消订阅 forkJoin 返回的 Observable? 的相关文章

  • 角度 2 ngIf 与可观察?

    我有一个非常简单的服务 它的工作是从 api authenticate url 获取 200 或 401 auth service ts Injectable export class AuthService constructor pri
  • ngbModal 作为通用确认框

    我正在尝试使用 ngbmodal 创建通用确认框 它将在整个应用程序中使用 其中 标题和消息将从调用组件传递到模态 我创建为 DialogService 并添加到 EntryComponents 中 现在我可以显示确认框 但无法得到结果 下
  • 该命令只能在 CLI 项目内部运行

    由于某些原因 我想使用Angular v5如果我运行以下命令 它会在其中构建一个应用程序angular 6这是我不想要的 ng new hello this creates angular app in the latest version
  • 具有 Universal 和 Ionic 的 Angular SSR 不会在页面源中显示实际数据

    我有一个 nguniversal 的 Angular 11 项目 我的主页正在从内部 翻译键对象 和外部 用于显示链接列表的快速节点服务器 服务获取数据 后端域与前端域地址不同 该网站显示正确 但由于某种原因 当我检查该网站时 最初未加载翻
  • 将 JS 库 xml2js 与 Angular 2 结合使用

    我正在尝试在 Angular 2 带有 TypeScript 的 RC 1 Web 应用程序中使用 xml2js 作为 XML 解析器 但是我只收到一些错误并且没有有效的解决方案 这是我一步一步所做的 通过安装 xml2jsnpm inst
  • 如何在 angular2 组件中导入 npm 包?

    我正在尝试学习 ng2 的诀窍 但依赖注入系统快要了我的命 我正在使用 ng 快速入门 https github com angular quickstart blob master README md https github com a
  • Angular CLI - Typescript 抛出:无法读取未定义的属性“长度”

    我使用 ngserve 在 Angular 4 项目中运行 但出现错误 Cannot read property length of undefined 但我的项目中没有任何财产长度 完整的错误 Your global Angular CL
  • 获取 pdf 第 1 页(共 2 页)的图像

    我正在使用 html2canvas 和 jsPDF 以及 Angular4 创建图像 我想将此图像放置在 2 页生成的 pdf 的第 1 页上 但似乎这条线 doc save test pdf 需要在函数内部htm2canvas 因为如果我
  • Ionic 4 用户登录后无法立即显示注销按钮

    我正在我的 Ionic 4 应用程序中工作 并且已经制作了登录 注册系统 当用户登录后 用户将能够访问该页面 当用户未登录并尝试访问该页面时 它将被重定向到登录页面 这是我的用户登录 page ts async UserLoginDetai
  • 在 Angular 上开发时无法自动完成和自动导入

    我已经在 Windows 上安装了最新的 VSCode 然后我安装了 languaje 对 TypeScript 的支持 最后 设置一些编辑器选项并安装一些扩展 编辑器配置 editor fontSize 12 editor minimap
  • Angular 2 在没有 @Input 或 @Output 的情况下监视组件属性的更改

    在 Angular 1 x 中 我可以使用 watch 来观看我想要的任何内容 但是在 Angular 2 中 我们有 ngOnChanges 它非常酷且高性能 但只能监视输入和输出装饰器 然而 有时我确实需要观察本地属性 以便在它们发生变
  • 如何在菜单中显示用户名

    我有一个 user name 我的 app component ts 中的变量 我想用它来显示用户登录后从本地存储获取的用户名 但这仅在应用程序启动时加载 我想在用户登录后重新加载它 当我在登录后关闭并重新打开应用程序时 它工作正常并显示用
  • 在 pre 标签内电子加载 html

    我最近创建了一个电子 角度应用程序 它在内部运行以下内容main ts win loadURL url format pathname path join dirname dist index html protocol file slas
  • 如何连接我的 angular2 应用程序 javascript 文件

    对于我的 Angular2 TypeScript 应用程序 我将所有 js 文件合并到一个 app min js 文件中 然后 System import 将此文件导入到我的 index html 页面 然后我得到一个同一模块文件中的多个匿
  • Chartjs + Angular6 未显示图表或任何错误

    我正在尝试以角度实现chart js 编写了一个简单的代码来在html上显示图表 但是页面上没有输出 也没有错误 我不明白问题出在哪里以及为什么显示图表失败 堆栈闪电战 https stackblitz com edit angularch
  • RxJS 比命令式更快吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对函数式编程和函数式反应式编程比较陌生 我读了很多遍函数式反应式编程的强大力量 好的 可读 避免副作用等 但是 我不知道如何以功能
  • 使用许多嵌套的 switchMap 是不好的做法吗?

    我有 HTTP 拦截器 在该拦截器中 在更改请求之前 我需要打开一个加载程序 真正让我担心的是我最终会得到很多switchMaps why 加载器是异步的 我还需要将从拦截器传递的消息转换为加载器服务 翻译消息也是异步的 在拦截器中 我应该
  • Angular 2 + Auth0(找不到模块“auth0-js”的声明文件。)

    找不到模块 auth0 js 的声明文件 C sandbox loginauth0 node modules auth0 js src index js 隐式具有 any 类型 我想使用 auth0 登录 但在按照说明构建我自己的 Angu
  • Angular Firebase 电子邮件验证验证后错误

    我正在使用电子邮件和密码设置授权功能 一切正常 但当我创建新用户时 应用程序会发送一封带有验证链接的电子邮件 验证电子邮件地址后 我想登录 以便返回登录表单 emial verified 保持在 假 状态 在我硬重新加载页面后 这是 真 但
  • Angular 7 Guard 重定向仅适用于双击

    问题是我已经实现了一个 Guard 旨在处理特定的目录 如果当前用户名的角色等于 2 它应该返回 true 如果没有 那么它不应该重定向 这是我的 app routing module ts 文件 问题出在 userlist 路径中 我们是

随机推荐