当前位置: 首页 > 知识库问答 >
问题:

将可观测数据馈送到其他可观测订阅

秦博达
2023-03-14

我正在创建一个应用程序,希望用户打开他们的活动聊天。它由Firebase作为后端提供动力。但是,在从第一个可观察订阅中检索数据(我需要将其用作第二个可观察订阅中的参数)之后,第二个订阅不会返回任何数据:它是空的。

在第一个订阅中,我检索一个唯一的ChatID。对于第二次订阅,我希望使用此ChatID接收Firebase集合中的所有邮件。

我已经发现它与观测对象的异步风格有关,但是我不知道如何嵌套观测对象,因为FlatMap和MergeMap都不适用于我的观测对象。

    //First subscription
    this.ActieveGebruikerObservable = this.firebaseService.Gebruiker_lezen(this.ActieveGebruiker.uid);
    this.ActieveGebruikerObservable.subscribe(
      val => this.ActieveGebruikerDetails = val
    );

    //Second subscription
    this.ActieveChatObservable = this.firebaseService.Chat_lezen(this.ActieveGebruiker.uid, this.ActieveGebruikerDetails.ActieveChat);
    this.ActieveChatObservable.subscribe(
      val => this.ActieveChatDetails = val
    );

所以好像是这个。活动的详细信息。activeChat作为参数输入第二个订阅时为空。但是,当我在页面上将其显示为{{this.activegebruikerdetails.activechat}}时,它返回所需的值。

我想检索第二个订阅数据,而不是空白数据。

共有2个答案

墨高杰
2023-03-14

也许你可以使用RxJS操作符来连接这些可观察的对象。喜欢

一些服务。开关映射(val)=

柳珂
2023-03-14

查看mergeMapflatMap=mergeMap

因为您没有给出第一个可观察对象的名称,所以我将其命名为foo

foo.pipe(
    tap(val => this.ActieveGebruikerDetails = val), // If you still wanted it present on `this`, but not needed
    mergeMap(val => this.firebaseService.Chat_lezen(this.ActieveGebruiker.uid,val.ActieveChat) // map to the firebase observable, using the value from the previous observable, allowing you to access ActieveChat
).subscribe(
  val => this.ActieveChatDetails = val
);
 类似资料:
  • 我正在将angular 2组件转换为使用异步数据源。 我有一个<代码> 这会导致错误: 找不到类型为“object”的不同支持对象“[object]”。NgFor只支持绑定到数组之类的可重用文件。 我试过

  • 我有一个带有http请求的服务,它返回我的标题的可观察到的内容 servise.ts 在我的组件中,我有一个函数从service get Request设置。看起来是这样的: 问题是,有时我接收到带有空标签的标题,不需要显示它们,所以我需要对其进行过滤,并对此标题发送.delete()请求。我尝试了类似的方法(想法是在之前添加,然后在另一个subscribe内部调用。)差不多吧 但不确定这是不是个

  • 我有一个可观察的对象,它从数据库游标的快速流中生成数据。我希望以每秒x项的速度限制输出。到目前为止,我一直在使用文档中所述的调用堆栈阻塞: 这很好,但出于好奇,是否有更好的方法使用背压来处理此问题? Tks公司

  • 我用reactiveX Zip做了一些实验,我注意到我在zip中定义的可观察性是一个接一个地执行的。我认为zip的好处是,zip中定义的每一个可观察到的线程都是由一个线程执行的,所以所有这些线程都是并行执行的。有什么方法能达到我想要的吗?。这是我的zip例子

  • 我试着把我的头绕在可观察的物体上。我喜欢Observable解决开发和可读性问题的方式。正如我读到的,好处是巨大的。 HTTP和集合上的可观察对象似乎是直截了当的。我怎样才能把这样的东西转换成可观察的模式呢。 这来自我的服务组件,用于提供身份验证。我希望它能像Angular2中的其他HTTP服务一样工作——支持数据、错误和完成处理程序。 这里的任何帮助都将不胜感激。我唯一的替代解决方案是创建s。但

  • 在组件中: 在init上,我可以观察到 如何获取当前值,如?