订阅多个 Observables(例如 Promises 中的链接 then())

2023-11-27

我的 Angular 2 应用程序有 2 种方法(GetCategories() and GetCartItems()) 在服务中,这两个方法都返回Observables.

为了从我的组件中依次调用这两个方法,我编写了以下代码:

 ngOnInit() 
{
   this.appService.GetCategories().subscribe( (data) => {
       this.appService.categories = data;


       this.appService.GetCartItems().subscribe( {
                                                    next: (data) => { this.appService.cart = data},
                                                    error: (err) => { this.toaster.error('cart==>' + err)}

                                                })

   });       
}

基本上,调用GetCartItems()从内部subscribe() of GetCategories(),我觉得这不是正确的方法。这是一种回调地狱。

关于如何以更好的方式实现这一点的任何想法(例如链接then() in Promises)?


好像GetCartItems不依赖于GetCategories。然后你可以使用zip:

Observable
    .zip(
        this.appService.GetCategories()
        this.appService.GetCartItems()
    )
    .catch(err => this.toaster.error(err))
    .subscribe(([categories, cartItems]) => {
        this.appService.categories = categories;
        this.appService.cart = cartItems;
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

订阅多个 Observables(例如 Promises 中的链接 then()) 的相关文章

  • 从 *ngIf Angular 5 调用函数

    假设我这里有这段代码 div lorem ipsum div 如果 ngIf 计算结果为 true 有没有办法可以调用函数 你知道这样的事情 div lorem ipsum div 任何帮助 将不胜感激 Thanks 角度方式是 div d
  • 调整移动加速计数据以考虑手机旋转

    我希望记录移动加速度计数据 x y z 并将其调整为一致 无论手机的方向 旋转如何 这里的用例是在驾驶时记录和标准化这些参数 以检测转弯 扭曲等 其中的一个关键要素是确保报告的数据独立于手机在汽车中的方向 我在用gyronorm js ht
  • Primeng - 无法在列中显示数组项

    我在 Angular 2 中使用 primeng 数据表 我的模型是一个数组products 每个产品都有一系列locations 该位置数组有一个属性name 如何显示每个name一行中的位置数组product 示例 如果首先produc
  • 使用 ngx-translate 翻译 Angular 2?

    我已按照说明进行所有配置和设置 应用程序模块 ts import Http from angular http import TranslateModule TranslateStaticLoader TranslateLoader Tra
  • 无法使用 API 获取的数据初始化 ngx-charts

    我在尝试初始化使用构建的图表时遇到了一些困难ngx 图表 https github com swimlane ngx charts使用API 获取数据 我构建了一个 REST API 在正确调用后 它会输出一些时间序列数据 prices i
  • 可观察的重试 / retryWhen 与平面地图

    我有以下代码来获取 id 以及与 id 相关的数据 process Observable
  • 在 Angular 中包含共享资产

    我创建了一个有角度的工作区 其中托管多个有角度的项目和库 在工作区中 我有一个共享库 其中包含所有资产 图像和徽标 assets projects xxx workspace src favicon ico projects xxx wor
  • Angular Material mat-form-field 输入字段图标

    在 Angular 项目中我有角材料垫形式场 https material angular io components form field overview我的图标出现在左外侧
  • 为什么我无法在 angular2 中导入 lodash

    我在 Angular2 rc1 中使用 Angular CLI 进行开发 我已经通过 npm 安装了 lodash node module 并使用以下命令在 systemjs 中配置了它 系统配置 ts User Configuration
  • 如何使用 RxJS 并行执行其他 Observable 之前等待第一个 Observable 完成

    目前我已经并行运行了所有 3 个请求 现在我需要等待第一个完成 然后才能并行触发另外两个 这就是我现在所拥有的 return Observable forkJoin request1 request2 request3 map succes
  • 更新到 Angular 6 和 rxjs 6 后 Plunker 损坏

    我有一个Plunker 中的 Angular 应用程序 https embed plnkr co 1dAIGrGqbcfrNVqs4WwW 自从我升级我的应用程序以使用 Angular 6 和 rxjs 6 以来 它不再起作用 这是我的co
  • Angular 5 - 加载视图后加载脚本

    我有一个遗留脚本 需要将其包含在我的角度应用程序中 该脚本的特点是它与特定组件相关 并且只有在加载该组件的视图之后才必须加载它 就今天而言 我成功地将它包含在 OnInit 函数中 但有时 并非总是出于某种原因 CLI 会抛出有关它的错误
  • 如何停止 mat-autocomplete 以将自定义用户输入值与给定选项分开?

    我正在使用来自material angular io的mat auto完整组件 默认行为是用户可以输入任何值 并提供可供选择的选项 您还可以将您的输入添加到所选值中 您可以在此处查看示例 https stackblitz com angul
  • 带前导选项的 BufferTime

    我有一些想要缓冲的事件 但我只想在第一个元素之后缓冲 bufferTime Input over time 1 2 3 4 5 6 Output over time 1 2 3 4 5 6 有没有办法做到这一点 我认为这可以通过将流分为两部
  • 在 Angular 2+ 中进行 DOM 操作的正确方法

    我知道有一些类似的问题 但没有人回答我的问题 基本上 以角度方式操作 DOM 的正确方法是什么 比如说我有这个 html
  • 从另一个组件获取价值 Angular 7

    我必须将组件导航栏和 form diyalog 分开 我想在导航栏中使用 form diyalog 的值 这是我的 navbar ts import Component OnInit from angular core import Men
  • Rxjs 带延迟功能的重试

    我正在尝试使用retry with delay函数 我预计函数会在 1000 毫秒延迟后调用 但事实并非如此 这里可能会出现什么错误 查看控制台输出 同一时间 16 22 48 我预计有 16 22 48 16 22 59 canCreat
  • 具有相同父布局角度的功能模块路由

    我想使用相同的布局 在应用程序模块 ts 对于不同的功能模块 每个模块都有自己的路由 以及一个单独的登录 注册布局 没有侧面菜单 页眉和页脚 到目前为止我尝试过这个 app app component html
  • 测试 - 无法解析(ClassName)的所有参数

    Context 我创建了一个ApiService类能够处理我们的自定义 API 查询 同时使用我们自己的序列化器和其他功能 ApiService的构造函数签名是 constructor metaManager MetaManager con
  • 有角材料 2 卡可滚动

    如何使mat card材质2组件内的内容可以滚动 我在材料2网站上没有找到任何内容 这不是内置功能 要使内容可滚动 请设置高度

随机推荐

  • 一个视图控制器中的两个 TableView [重复]

    这个问题在这里已经有答案了 我有一个按钮和两个按钮tableViewControllers在一个视图控制器中 因此 如果我按下该按钮 第一个表视图控制器将出现 并且它将按行显示一些数据 如果我选择第一个表视图控制器中的任何行 第二个表视图控
  • 使用 Yii 重定向访问规则

    我正在做一个需要身份验证的应用程序 在应用程序的索引页面中 我指定了这样的访问规则 public function accessRules return array array deny actions gt array index reg
  • iPhone - 如何从应用程序保存用户设置?

    将 iPhone 应用程序中的几个变量保存到长期内存中的最简单方法是什么 我有一个可与不同 sqlite 数据库配合使用的应用程序 我希望在退出应用程序后保存最后一个活动数据库名称 以便在用户再次进入应用程序时打开最后一个数据库 为此目的创
  • 为什么此 F# 函数需要括号?

    为什么需要括号read rest of csv below let read rest of csv csv data Add csv fileH ReadFields gt ignore not csv fileH EndOfData w
  • WPF ListView 对列单击进行排序

    我有一个列表视图 其中的项目在运行时以具有单列 多列的网格形式添加 现在我需要让排序工作 一旦列表视图中有项目并且他们单击该列 它应该在该列上对其进行排序 下面是列表视图的代码
  • 在 ConvertBack() 方法中获取 WPF 绑定中 IValueConverter 实现的 Source 值

    我将依赖属性绑定到 WPF 中的 textboxex 该属性是一个字符串 其中一些值由 分隔 例如 1 2 3 4 我需要将各个值绑定到单独的文本框 这对于以下实现来说很好Convert method public object Conve
  • 正则表达式“punct”字符类根据 Ruby 版本匹配不同的字符

    Ruby 的字符类标点符号 i e punct p Punct or p P 似乎根据我使用的 Ruby 版本匹配不同的字符 这是一个小例子 很抱歉弄乱了 SO 的语法荧光笔 punct rb chars lt lt EOD split l
  • 嵌套和重复的 angularjs 指令中链接函数的调用顺序

    我对 Javascript 编程相当陌生 而且只接触过 AngularJS 为了评估它 我决定编写一个简单的笔记应用程序 该模型非常简单 是一个笔记列表 其中每个笔记都有一个标签 一个文本和一个标签列表 然而 我在嵌套指令的隔离范围之间传递
  • 在 Ruby 和 PHP 之间共享会话

    是否可以在子域上的 PHP 应用程序和其他子域上的 Ruby 应用程序之间共享会话 我真的不知道该从这里把它带到哪里 我知道我可以手动将域设置为根域 以便 cookie 对所有子域都有效 但是我如何从会话中获取 设置内容 以便在子域之间共享
  • Django - 捕获异常

    看这段代码 try do something except raise Exception XYZ has gone wrong 即使DEBUG True 我不想要这个raise Exception给那个黄页 但确实如此 我想通过将用户重定
  • 如何控制面板内文本框的焦点顺序?

    我有一个带有许多文本框的表单 我需要一个组内的一些文本框 以及另一组内的其他文本框 按组划分 我只需要一种方法使这些文本框看起来彼此属于彼此 我制作了两个面板并向其中添加了文本框 然后 我在这些面板周围放置了边框 However my pr
  • WSDL、Enums 和 C#:仍然很模糊

    我试图在网上查找这一点 但所有 WSDL 示例似乎都没有真正解释我是否应该将事物标记为 WSDL 中的基本类型字符串或 int 基本上 我正在尝试制作 WSDL 以便可以表示枚举 我心里已经有一个 C 枚举 我想将它匹配到 public e
  • 在 Selenium 中设置隐藏输入值?

    我们的表单上隐藏了输入字段 我们需要 Selenium 来设置这些字段的值 通过 Selenium IDE 设置隐藏输入值的最佳方法是什么 我能找到的最简单的方法 命令 运行脚本 Value javascript this browserb
  • Xcode Bitcode,包括符号设置对 dSYM 生成的影响

    由于我使用 Crashlytics 来处理崩溃 所以我总是取消选中 包含应用程序符号 以便您的应用程序接收来自 Apple 的符号化崩溃日志 并保留 包含位码 在将我的应用程序提交到 iTunes Connect 之前进行了检查 Apple
  • 实体框架时间戳生成数据库问题

    我在使用 EF 4 0 时遇到问题 我用 时间戳 列创建实体 之后 我尝试生成数据库 在 SQL 脚本中 列看起来像 binary 8 而不是时间戳 怎么解决呢 问题已解决 EF 4 无法从 edmx 设计器生成时间戳列 解决方案很简单 将
  • 无论顺序如何,两列的唯一约束

    我有以下表定义 CREATE TABLE Car CarID int NOT NULL PRIMARY KEY IDENTITY 1 1 FirstColorID int FOREIGN KEY REFERENCES Colors Colo
  • 如何隐藏 django modelform 中的字段?

    例如 class TestModel models Model ref1 models ForeignKey RefModel text1 models TextField class TestModelForm ModelForm cla
  • 在代码后面附加行为

    我有以下 Xaml 用于在属性网格内用作编辑器的用户控件 问题是 从后面的代码附加行为的 C 会是什么样子
  • 在 Linux 中模拟硬盘

    作为研究项目的一部分 我开发了一个基于 FUSE 的文件系统 现在必须研究硬盘驱动器接收到的实际读 写请求 为了做到这一点 我正在考虑在 Linux 中创建虚拟硬盘驱动器的选项 它将拦截文件系统生成的请求并记录它们 互联网上是否有任何资源可
  • 订阅多个 Observables(例如 Promises 中的链接 then())

    我的 Angular 2 应用程序有 2 种方法 GetCategories and GetCartItems 在服务中 这两个方法都返回Observables 为了从我的组件中依次调用这两个方法 我编写了以下代码 ngOnInit thi