Angular 5 和 Rxjs:等待所有订阅

2024-02-17

我想在做某事之前等待所有 http 请求完成。

在 Angular 5 之前,我使用的是 Promise 和Promise.All.

使用 Angular 5 和新的HttpClient,我将我的承诺转化为可观察到的结果。如果我理解正确的话,我现在必须使用forkJoin来替换Promise.All.

但这是一个问题,因为forkJoin期望 Observables 作为参数,但我已经订阅了代码中的那些

ngOnInit() {
    forkJoin([this.getTemplates(), this.getHistory()]).subscribe(
        results => {
            this.isLoading = false;
        }
    );
}

getTemplates(): Observable<any> {

    return this.notifService.getTemplateList()
        .subscribe(
            response => {
                if (response.code === 0) {
                    this.templateList = response.data;
                }
                else {
                    this.openSnackBar(response.formatError());
                }
            },
            error => {
                this.openSnackBar(error);
            });
}

我无法执行订阅内的逻辑forkJoin因为那些方法(getTemplates() & getHistory()) 需要独立并在其他进程中单独调用。

那么,我该怎么做才能确保所有订阅都已完成?

顺便说一句,上面的代码无法编译,因为该方法getTemplates()返回一个Subscription而不是一个Observable


Use map代替subscribe in getTemplates:

getTemplates(): Observable<any> {
    return this.notifService.getTemplateList()
        .map(response => {
            /* ... */
            return reponse;
        });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 5 和 Rxjs:等待所有订阅 的相关文章

随机推荐

  • Firebase 远程通知未收到?

    我尝试通过云消息从 Firebase 控制台发送远程通知 但我的手机没有收到任何警报 我已将证书上传到 Firebase 并且正在使用 Firebase 教程提供的默认代码来接收通知 Here is a picture of my cert
  • tkinter OptionMenu 问题(bug?):GUI 和程序值未保持同步(python 3.x)

    在某些情况下 下面的演示 OpenMenu 小部件上显示的值与程序使用的值不匹配 这会导致当用户期望选项 A 时执行选项 B 导致 WTF 用户的反应 不幸的是 OptionMenu 小部件没有我与其他小部件一起使用来轻松处理问题的 命令
  • 如何在 PostgreSQL 中获得随机笛卡尔积?

    我有两张桌子 custassets and tags 为了生成一些测试数据 我想做一个INSERT INTO一个多对多表SELECT从每个表中获取随机行 以便一个表中的随机主键与第二个表中的随机主键配对 令我惊讶的是 这并不像我最初想象的那
  • aframe 不渲染映射到画布的 Lottie json 纹理,但可以在 Three.js 中使用

    所以我基本上试图通过 aframe 将 json 渲染到画布上 你确实成功地将其映射到 Three js 中的画布上 但是当我尝试在 aframe 中复制它时 它只显示一个白色框架 它显示它在那里 但没有显示动画 无法在 aframe 中渲
  • C# SSIS 数据流组件 - 创建自定义输入列

    我正在尝试创建我的第一个数据流组件 该组件将获取输入地址 通过 PAF api 运行它 并从文件源或数据库表中吐出格式正确的地址和原始输入列 我需要以特定格式提供源输入地址 因此我需要用户将源输入列映射到特定的自定义输入列 我能够使用 in
  • Spring RabbitMQ 教程导致连接被拒绝错误

    我是一名经验丰富的 Java 程序员 并且是第一次尝试 Spring Rabbit MQ 我遵循了 messages rabbitMQ 教程exactly使用 Maven http spring io guides gs messaging
  • 在 Node.js 上强制使用 TLS 1.1 或更高版本

    我正在尝试创建一个使用 TLS 1 1 或更高版本的服务器 这是我当前的 TLS 配置 var options options key fs readFileSync privatekey pem options cert fs readF
  • 如何从旋转矩阵中删除轴?

    我有一个 opengl 任意旋转矩阵 想删除 X 和 Y 轴 只留下 Z 轴 这可能吗 有关如何做的任何指示吗 只是在这里大声思考 但是你不能使用矩阵来旋转像 1 0 0 这样的向量 然后执行 atan2 y x 看看它旋转了多少 然后构建
  • 删除 MySQL 中的重复行

    我有一个包含以下字段的表 id Unique url Unique title company site id 现在 我需要删除具有相同的行title company and site id 一种方法是使用以下 SQL 和脚本 PHP SE
  • 如何创建抑制错误和警告的宏?

    我想重新定义或覆盖其中的一些函数Base 而用户却没有注意到这一点 我不久前发现了这个技巧 original stderr STDERR redirect stderr code redirect stderr original stder
  • 如何从C:\Python37\Scripts创建类似于pip.exe、jupyter.exe等的.exe?

    为了要做pip or jupyter可通过 Windows 命令行获取无论当前工作目录如何只用pip or jupyter Windows上的Python好像用的是这个方法 put C Python37 Scripts在路径中 创建一个 1
  • 如何在 Ajax 后过滤结果上添加 Ajax 分页

    我正在开发一个带有分类过滤器的网站 我创建了这样的分类小部件 Tax A Tax B Tax C Tax D 并在下面放置一个应用过滤器 当我单击 应用过滤器 时 它将通过 Ajax 请求过滤帖子并在 HTML 上附加帖子 现在我想在过滤器
  • HTTP 状态代码 4xx 与 5xx

    我正在创建一个 REST API 发现在某些情况下很难选择要返回的正确 HTTP 状态代码 假设我期望某个值 当它不存在时 我无法执行特定任务并返回错误 由于缺少值 服务器无法处理该请求 但它是客户端发送的 格式良好但不完整 最好返回一个4
  • 是否可以修改非易失性变量,以便另一个线程能够“看到”更新?

    我有一个 Thread X 它读取非易失性每秒都有变量 这样做不需要任何同步手段 现在我想知道是否有某种方法可以修改 Thread Y 上的非易失性变量 以便 Thread Y 的写入 最终 在 Thread X 上可见 public cl
  • 获取因溢出而部分隐藏的 HTML 元素的完整高度:Hidden With JQuery / Javascript

    正如标题所示 如何使用 over hide 获取被容器 div 部分隐藏的元素的完整高度 几乎就好像它没有隐藏和可滚动一样 有任何想法吗 HTML div div Short ribs frankfurter jerky corned be
  • HTTP 415 无法处理消息,因为内容类型为“application/json;” charset=utf-8' 不是预期的类型 'text/xml;字符集=utf-8'

    我们有一个 Web 服务在 HTTPS 上运行良好 但在 HTTPS 上显示 HTTP 415 错误 因此 在 HTTP 下 我们可以毫无问题地发送和接收 JSON 的 POST 请求 当我们在 HTTPS 下尝试相同的操作时 我们收到错误
  • 任务栏通知发光

    我有一个 TCP 聊天应用程序 当新消息到达时 我想让任务栏发光 直到用户再次打开表单 以防它没有焦点 激活 我的意思的一个例子 http puu sh 4z01n png http puu sh 4z01n png 怎样才能让它像这样发光
  • 使用 Jquery 根据其内容隐藏

    我正在努力实现以下目标 某个页面会有一系列字符串 如果数据库内容存在 则将其替换为数据库内容 例如 h2 class label Title h2 p class value Title p 会成为 h2 class label Title
  • Linkedin 的 URL 方案

    我有一个ios应用程序 我可以使用自定义 URL 方案 linkedin 从我的 ios 应用程序打开链接的本机应用程序 但是如何通过我的 ios 应用程序发布指向 linkedin 本机应用程序的链接 我们有什么特定的参数吗 linked
  • Angular 5 和 Rxjs:等待所有订阅

    我想在做某事之前等待所有 http 请求完成 在 Angular 5 之前 我使用的是 Promise 和Promise All 使用 Angular 5 和新的HttpClient 我将我的承诺转化为可观察到的结果 如果我理解正确的话 我