如何从 Observable.from 收集发出值的数组?

2024-01-05

所以在 Rxjs 中,我有一堆代码,

return Observable.from(input_array)
           .concatMap((item)=>{
               //this part emits an Observable.of<string> for each item in the input_array
           })
           .scan((output_array:string[],each_item_output_array:string)=>{
               return output_array.push(each_item_output_array) ;
           });

但显然这是错误的,扫描会破坏 concatMap 内的代码,所以我想知道如何收集可观察中每个项目的输出数组from操作员?


在您致电时scan http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-scan您尚未为累加器指定种子。在这种情况下,第一个值被用作种子。例如:

Rx.Observable
  .from(["a", "b", "c"])
  .scan((acc, value) => acc + value)
  .subscribe(value => console.log(value));
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>

在您的代码片段中,第一个值不是数组,因此您无法调用push在上面。要将值累积到数组中,您可以指定一个数组种子,如下所示:

Rx.Observable
  .from(["a", "b", "c"])
  .concatMap(value => Rx.Observable.of(value))
  .scan((acc, value) => {
    acc.push(value);
    return acc;
  }, []) // Note that an empty array is use as the seed
  .subscribe(value => console.log(JSON.stringify(value)));
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>

不过,对于某些用例,最好不要改变数组:

Rx.Observable
  .from(["a", "b", "c"])
  .concatMap(value => Rx.Observable.of(value))
  .scan((acc, value) => [...acc, value], [])
  .subscribe(value => console.log(JSON.stringify(value)));
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>

注意scan为它接收到的每个值发出一个数组。如果您只想在可观察完成时发出单个数组,则可以使用toArray运算符改为:

Rx.Observable
  .from(["a", "b", "c"])
  .concatMap(value => Rx.Observable.of(value))
  .toArray()
  .subscribe(value => console.log(JSON.stringify(value)));
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Observable.from 收集发出值的数组? 的相关文章

随机推荐

  • Selenium Webdriver - 等待页面在 Java&JavaScript(ajax/jquery/animation 等)中完全加载

    我正在尝试构建一种更好的方法来等待每次单击后加载页面 目前我使用的是这样的 public boolean waitForJSandJQueryToLoad WebDriverWait wait new WebDriverWait webDr
  • 按密度拆分的 APK 仍包含所有资源

    我决定尝试 apk sliptting 来减小 apk 的大小 我将以下内容添加到我的 gradle 构建文件中 splits Configures multiple APKs based on screen density density
  • 闪存记录 API

    谁能为 Flash AIR Flex 推荐一个好的 AS3 日志记录 API 除了编码事件之外 我还需要一些东西来捕获和记录鼠标和键盘事件 最好是有详细记录 支持的东西 提前致谢 我一直在使用霹雳 http code google com
  • 使用composer只需要1个文件?

    是否可以只需要 Composer 包中的 1 个文件 我只需要包中的 1 个或几个文件 当我只使用几个文件时 要求包含数百个文件的整个包是毫无意义的 可以通过作曲家来做到这一点吗 可以使用以下命令将特定文件包含在当前包中files自动加载策
  • Coredata非常慢;迅速

    我制作了一个 iOS 应用程序来跟踪设备的 GPS 路线 问题是 当我跟踪超过 5 分钟时 coredata 需要很长时间才能保存 我保存一个名为会话的对象 会话有很多位置对象 位置对象是 纬度 经度 会话对象看起来像 名称 string
  • Google Play Billing:如何模拟“帐户保留”状态(在调试/沙盒模式下)

    2020 年 11 月之前 Google Play 上的 Android 应用必须管理 帐户保留 状态 https developer android com distribute play policies https developer
  • AWS Fargate 中的文件

    是否可以在 Fargate 中实际写入 编辑 删除文件 由于它是无服务器的并且实际上没有文件系统 对此我无法得到明确的答案 例如 我们的一个客户需要在本地容器上写入一些临时缓存文件 这可能吗 我不想为此设置整个数据容器卷 Thanks Fa
  • 反序列化期间忽略属性

    我有一个非常好的序列化类 终于 现在我想向此类添加一个属性 但我根本不想将其序列化 是否可以添加带有某种属性的新属性 以便当我调用序列化或反序列化方法时 该属性将被忽视 XmlIgnore public int DoNotSerialize
  • 您最常重用的课程是什么?

    一段时间后 每个程序员都会得到一组实用程序类 其中一些是真正的编程珍珠 并且可以在您的多个项目中重复使用 例如 在java中 class Separator private String separator private boolean
  • php中如何将多个数组混合到一个数组中

    我正在从数据库获取数组 但它创建了多个数组 我只需要数据库中的一个数组 现在我只想从多个数组创建一个数组 我从数据库中获取了数组 Array 0 gt Array 0 gt 1 pro ref id gt 1 1 gt Array 0 gt
  • 通过 MinGW 上的 Swig/Python 以二进制模式使用 C++ 标准流

    我有一个用 C 编写的库 它使用标准流来读取和写入对象 我还有一个用 Swig 生成的 Python 接口 我用它来访问该库 在 Linux 上一切正常 但在 Windows 在 MinGW 上 上似乎不可能通过 Python 接口以二进制
  • 如何使用 netty 通过 HTTP 传输响应

    我正在使用 Netty 3 6 6 我想向调用者发送一个大的响应 我无法将响应正文复制到 ChannelBuffer 中 因为在某些情况下它会非常大 我正在将服务器从CXF迁移到Netty 以前 我只能使用CXF提供的OutputStrea
  • 为什么将 Count 与 IQueryable 一起使用被认为是不可行的

    如果我有以下代码 IQueryable
  • 如何即时更新 Eclipse 模板变量?

    我通过扩展点添加了以下新的 Eclipse 模板 它只是添加一个示例模板testTag tag
  • 一个身体可以在另一个身体里面吗?

    是否可以在外部 tbody 中包含内部 tbody 如下所示 这是一个 CSS 示例 这是示例 HTML table tbody class class1 tr td td td td tr tbody class class2 tr td
  • 未显示所有属性

    当我们尝试通过管道将数据导出到其他函数时 我们在 PowerShell 中观察到一些奇怪的行为 示例代码 Array Obj1 PSCustomObject Member1 First Member2 Second Obj2 PSCusto
  • 如何在oracle中使用SELECT查询创建空白/空列?

    我想在 oracle 中使用 选择 查询生成带有空白 空列的输出 我可以通过下面的 sql 查询来实现这一点 SELECT CustomerName AS Customer AS Contact FROM Customers 因此 当我运行
  • 具有多种角色的 Laravel 中间件

    我在 Laravel 的中间件方面遇到了一些问题 让我告诉你我想要实现的基本想法 该网站的注册用户将具有以下四种角色之一 学生 默认 可以访问 index and show views 审批者 可以访问上一个 加上 overview upd
  • 将 UIImageView 适配到 UIImage

    我有一个使用自动布局和约束设置的 UIImage 视图 我使用将图像适合图像视图 self selectPhoto contentMode UIViewContentModeScaleAspectFit NSLayoutConstraint
  • 如何从 Observable.from 收集发出值的数组?

    所以在 Rxjs 中 我有一堆代码 return Observable from input array concatMap item gt this part emits an Observable of