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

RxJs-具有可观察属性的FlatMap对象

贺聪
2023-03-14

我正在努力处理一个简单的RxJs查询,但我似乎无法理解。如果观察对象被包装在一个对象中,我似乎不知道如何合并它们。如果我直接从flatMap返回Observable,那么这个示例可以正常工作,但我还需要在输出中输入名称。我怎样才能做到这一点?

我正在使用RxJS 5.0.0-beta.2

基本数据结构:

var data = [
  {
    "name": "Test #1",
    "users": [
      {
        "name": "John Doe",
        "gender": "male"
      },
      {
        "name": "John Doe",
        "gender": "male"
      },
      {
        "name": "Jane Doe",
        "gender": "female"
      }
    ]
  },
  {
    "name": "Test #2",
    "users": [
      {
        "name": "John Doe",
        "gender": "male"
      },
      {
        "name": "Jane Doe",
        "gender": "female"
      },
      {
        "name": "Jane Doe",
        "gender": "female"
      }
    ] 
  }
];

RxJs函数

Observable.fromArray(data)
  .flatMap(x => {
    return Observable.of({
      "name": x.name, 
      "count": Observable.fromArray(x.users)
                .filter(x => x.gender == "male")
                .count()
      })
  })
  .toArray()
  .subscribe(result => {
    console.log(result);
  });

预期结果:

result = [
    {
      "name": "Test #1",
      "count": 2
    },
    {
      "name": "Test #2",
      "count": 1
    }
  ];

实际结果:

result = [
    {
      "name": "Test #1",
      "count": Observable
    },
    {
      "name": "Test #2",
      "count": Observable
    }
  ];

共有1个答案

楚翰
2023-03-14
Observable.fromArray(data)
.flatMap(x => {
  return Observable.of({
    "name": x.name, 
    "count": x.users
              .filter(x => x.gender == "male")
              .length
  });
})
.toArray()
.subscribe(result => {
  console.log(result);
});
 类似资料:
  • 我对Observables和RxJs是新手,我想对回报进行调整。如果第一个选择器返回某个值,我希望第二个选择器可以观察到。但是如果第一个选择器没有返回那个特定的值,我想返回false,而不是(false)。我已经走了这么远,但这返回了一个可观察的结果

  • 我试图将一个角度函数转换为可观察模式,因为它的当前实现与它有一些异步性。为了讨论这个问题,我们举一个简单的例子。 可以通过以下方式将其转换为使用可观察对象: 我所面临的问题(据我所知)是针对无法访问内部选择语句的情况。 如果使用常规主题,订阅函数肯定不会得到任何值,因为事件的顺序是: 函数被调用 主题已创建 值已设置 调用函数订阅,因此仅在此事件发生后获取值 如果使用了BehaviorSubjec

  • 导览 本小节主要介绍 Apache ShardingSphere 可观察性的相关功能 应用性能监控集成

  • 有人能向我解释一下为什么运算符可以接受返回或的函数吗? 官方文件说: FlatMap运算符通过将您指定的函数应用于源可观察对象发出的每个项目来转换可观察对象,其中该函数返回本身发出项目的可观察对象。 为什么它也可以返回数组? 例如,它们都是有效的: 但这不起作用:

  • 我正在努力理解rxJs观察者/可观察的。 我有一个Angular应用程序,其中一个服务创建一个可观察的: 闲聊服务ts: 当聊天室中收到消息时。服务ts,消息(假定)是多播的: 两个组件以这种方式订阅可观察对象: 问题:只有一个(最后一个订阅的)收到消息。 问:我如何配置可观察到多播到所有订阅者?

  • 因此,我有一个NgRx选择器,它返回一个带有一系列触点的可观测值。我想映射这个流,对于每个联系人数组,映射每个联系人,并向Github发出Http请求以获取他们的配置文件图像,并将其附加到联系人对象。然而,我不知道如何做到这一点,而不以一系列的可观测数据结束。 下面是我尝试过的,但这不起作用。 下面是我收到的错误消息: 如有任何建议,将不胜感激!