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

如何转换两个不可观测数据流

宰父嘉胜
2023-03-14

我有两个可观察的可观察的

this.loaded$.pipe(
  merge(this.loading$)
).subscribe(console.log); //`false`,`false`; `true`,`false`; etc

然后,我想根据条件将流转换为单个布尔可观测值:
如果val1 val2==1-返回false;如果val1 val2!==1-返回

因此,问题是如何转换合并的可观察对象?

更新1:
绑定到使用CombineTest但遇到问题:

combineLatest(
  this.loaded$, this.loading$,
  (val1, val2) => val1 + val2 === 1
);

[ts]运算符“”不能应用于类型“{}”和“boolean”。

最新动态

不存在于组合最新()

    combineLatest(
          this.loaded$, this.loading$,
          (val1, val2) => (val1, val2) => Number(val1) + Number(val2) === 1
        ).subscribe(); // does not work

[ts]类型“OperatorFunction”上不存在属性“subscribe”

更新3:
我在这里找到了我的问题的答案,为什么'CombineTest'返回运算符函数


共有2个答案

应向晨
2023-03-14

您可以使用mapXXX操作符来实现它。例如:

this.loaded$.pipe(
  merge(this.loading$),
  map((value) =>  val > 5 ? true : false)
).subscribe(console.log); //`false`,`false`; `true`,`false`; etc
穆商震
2023-03-14

[ts]类型“OperatorFunction”上不存在属性“subscribe”

当您试图将输出从布尔值转换为数字时,如果您想更改需要使用SwitchMap的类型,就会出现此错误,但据我所知,一次只需要一个可观察的流。

因此,建议使用下面给出的forkjoin,这也将解决您的问题。

作为其布尔结果,您应该应用逻辑运算符(

 (val1, val2) => val1 && val2 

正如您已经意识到的,您将收到两个值,即您有固定数量的请求,并且两个请求都需要完成才能获得结果,那么您应该使用forkJoin

async getResult()
{
    const example = await forkJoin( request1, request2).toPromise();
    const output = example [0] && example[1];
}

没有得到多少您想要实现的目标,但是如果您想要应用,那么您应该将布尔值转换为如下所示的数字

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

  • 问题内容: 我正在尝试将项目设置为表视图,但是setitems方法需要一个可观察的列表,而我的模型中却有一个可观察的集合.FXCollections实用程序类没有给定可观察的集合来创建可观察的列表的方法。类强制转换异常(按预期)。 目前,我正在使用这种代码 而且我有一些问题: 在表中进行编辑是否会按预期更新基础集? 这是这样做的“正确”方法吗 简而言之,我需要样式指南或最佳做法,以便在可观察集和可

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

  • 我使用库在代码中使用了大量转换为的RxJava。所以我想在RxJava Observable中添加一个扩展函数,以便轻松地将它们转换为。 这些是我的扩展函数: null 附注。 我刚认识Kotlin所以我想问这些问题。如有任何帮助,我们将不胜感激。非常感谢。

  • 我正在尝试使用 考虑以下代码 每当我试图打印出的结果时,它总是返回 即使我返回一个json对象。 如何打印的结果?

  • 我正在创建一个应用程序,希望用户打开他们的活动聊天。它由Firebase作为后端提供动力。但是,在从第一个可观察订阅中检索数据(我需要将其用作第二个可观察订阅中的参数)之后,第二个订阅不会返回任何数据:它是空的。 在第一个订阅中,我检索一个唯一的ChatID。对于第二次订阅,我希望使用此ChatID接收Firebase集合中的所有邮件。 我已经发现它与观测对象的异步风格有关,但是我不知道如何嵌套观