首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

带有NgRx选择器的RxJS groupBy永远不会完成

是一个关于RxJS和NgRx的问题。下面是对这个问题的完善且全面的答案:

RxJS是一个用于处理异步数据流的JavaScript库。它提供了一套丰富的操作符,可以方便地处理事件序列、异步请求、数据变换等。而NgRx是基于RxJS的状态管理库,用于管理Angular应用中的状态。

在RxJS中,groupBy操作符用于将源Observable的数据按照指定的键进行分组。它返回一个Observable,该Observable发出一个由分组Observable组成的Map。每个分组Observable都会发出与其对应的键相匹配的数据。

然而,当使用带有NgRx选择器的RxJS groupBy时,可能会出现永远不会完成的情况。这是因为NgRx选择器是一个纯函数,它从应用状态中选择特定的数据。当选择器的输入参数没有发生变化时,选择器会返回上一次的结果,而不会重新计算。

当使用groupBy操作符时,它会将源Observable的数据按照键进行分组,并将每个分组Observable传递给选择器进行处理。由于选择器的输入参数没有发生变化,选择器会返回上一次的结果,而不会重新计算。因此,groupBy操作符永远不会完成,因为选择器的结果没有改变。

解决这个问题的方法是使用RxJS的pipe操作符,将groupBy操作符与其他操作符结合使用,以确保选择器的输入参数发生变化。例如,可以使用mergeMap操作符将分组Observable转换为新的Observable,然后使用toArray操作符将分组Observable的数据收集到一个数组中。这样,选择器的输入参数会发生变化,从而使groupBy操作符能够完成。

总结起来,带有NgRx选择器的RxJS groupBy永远不会完成是因为选择器的输入参数没有发生变化。解决这个问题的方法是使用RxJS的pipe操作符,结合其他操作符对分组Observable进行转换,以确保选择器的输入参数发生变化。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云原生产品:https://cloud.tencent.com/product/tke
  • 腾讯云数据库产品:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器运维产品:https://cloud.tencent.com/product/cvm
  • 腾讯云人工智能产品:https://cloud.tencent.com/product/ai
  • 腾讯云物联网产品:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发产品:https://cloud.tencent.com/product/mab
  • 腾讯云存储产品:https://cloud.tencent.com/product/cos
  • 腾讯云区块链产品:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙产品:https://cloud.tencent.com/product/tencent-virtual-world
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一个Angular 5教程:一步一步指导实现你第一个Angular 5应用程序

State是一个单一,不可变数据结构 - 至少Ngrx为我们实现它方式。Ngrx是由Redux提供灵感RxJS支持Angular应用程序状态管理库”。 Ngrx灵感来自Redux。...提供了一个记录器,并为我们的卡阵列创建了选择器功能。...因此,“对结果评估不会导致任何语义上可观察到副作用或输出,例如可变对象突变或输出到I / O设备”......我们能做什么?答案在这个定义中是正确Ngrx对救援副作用。...RxJS是JavaScriptReactive Extensions库,允许我们使用Observables进行操作,Observables是替代我们独立承诺事件流。 什么是NgRX?...NgRX是一种管理应用程序状态模式。这是一个支持Angular应用程序RxJS驱动状态管理库。它使我们能够拥有单一应用程序状态,将所有组件连接在一起,并为我们应用程序提供可预测和一致行为。

42.5K10

调试 RxJS 第2部分: 日志篇

它显示了所发生一切: 订阅组合 observable 会并行订阅每个用户 API 请求 observable 请求完成顺序是不固定 observables 全部完成 全部完成后,组合 observable...当编写 redux-observable epics 或 ngrx effects 时,我见过一些开发者代码大概是这样: ? 乍看上去没什么问题,而且大多数情况下也能正常运行。...发出报错 action 后, observable 便完成了,因为 redux-observable 基础设施取消了 epic 订阅。...在 epic 中,catch 返回 observable 完成了,epic 也就完成了。 解决方法是将 map 和 catch 调用移到 switchMap 里面,就像这样: ?...这样 epic 便不会完成,它会继续 dispatch 报错 actions: ? 在这两个示例中,对于被调试代码来说,唯一需要修改就是是添加了某个标记注释。

1.2K40

写在 2021: 值得关注学习前端框架和工具库

对于我认为较为主流不会包含(如Vue与React框架本身这种~)。...Nx Cloud[76],Nx(详细介绍见下面)提供云平台,主要功能是在项目达到一定规模,导致构建耗时较长时,避免每个开发人员要重新在自己本地构建一次项目,而是从云端下载已构建完成文件,以此来提高效率...Redux-Observable[91], ReduxRxJS中间件。 Reactive.How[92],生动展示RxJS Observable在操作符管道中流动,入门期间使用有奇效。...秉承了Angular思想,提供了一整套集成:和Angular Router集成:@ngrx/router-store;对于集合类型适配:@ngrx/entity;副作用管理:@ngrx/effects...,以及必不可少schematics:@ngrx/schematics等,最大优势是和RxJS深度集成。

4.2K10

写在2021: 值得关注学习前端框架和工具库

对于我认为较为主流不会包含(如Vue与React框架本身这种~)。...Nx Cloud,Nx(详细介绍见下面)提供云平台,主要功能是在项目达到一定规模,导致构建耗时较长时,避免每个开发人员要重新在自己本地构建一次项目,而是从云端下载已构建完成文件,以此来提高效率。...Redux-Observable, ReduxRxJS中间件。 Reactive.How,生动展示RxJS Observable在操作符管道中流动,入门期间使用有奇效。...秉承了Angular思想,提供了一整套集成:和Angular Router集成:@ngrx/router-store;对于集合类型适配:@ngrx/entity;副作用管理:@ngrx/effects...,以及必不可少schematics:@ngrx/schematics等,最大优势是和RxJS深度集成。

2.8K10

作为JavaScript开发人员,这些必备VS Code插件你都用过吗?

VS Code插件种类 在本文,我主要介绍专门针对JavaScript开发者VS Code插件。有很多满足此条件VS Code插件,当然我不会都作介绍。...Angular 6:提供Angular 6代码片段,支持TypeScript、HTML、Angular Material ngRxRxJS和Flex Layout。...它带有很好发布在GitBook上文档。 Ember:为Ember提供了命令行支持和智能提示。安装完后,所有ember cli命令可直接在VS Code自己命令行列表中使用。...Ionic Extesion Pack:这个包里有针对Ionic、Angular、RxJS、Cordova和HTML开发插件。...client这样可用工具,让你在完成工作时减少了对外部工具依赖;再比如SpreadJS纯前端表格控件,让在线Excel嵌入您应用。

2.8K10

Angular vs React 最全面深入对比

虽然Angular是第一个积极采用TypeScript主要框架,但它也可以与React一起使用。 RxJS RxJS是一个响应式编程库,可以灵活地处理异步操作和事件。...@ngrx/store @ngrx/store是由Redux启发Angular状态管理库,基于由pure reducer进行突变状态。...它与RxJS集成允许您利用推送更改检测策略获得更好性能。...不需要学习任何新逻辑结构或循环,因为所有这些都是纯JavaScript。 官方教程是开始学习React好地方。一旦完成了官方教程,接下来应该熟悉并掌握React路由机制 。...选择项目的一些主要功能,并尝试使用其中一个框架以简单方式实现它们。 Demo通常不会(也不应该)花费很多时间,但会提供一些宝贵经验,可以帮助您验证关键技术要求。

3.8K70

这些必备VSCode JavaScript插件你都用过吗?

有很多满足此条件VS Code插件,当然我不会都作介绍。相反,我会着重介绍那些已经相当流行而且对前端开发者来说必不可少VS Code插件。为简单起见,我把它们分为10类。...Angular 6(提供Angular 6代码片段,支持TypeScript、HTML、Angular Material ngRxRxJS和Flex Layout。...目前有220多万下载量和172个Angular代码片段。) Angular v5 snippets(提供针对TypeScript、RxJS、HTML和Docker文件代码片段。...它带有很好发布在GitBook上文档。) Ember(为Ember提供了命令行支持和智能提示。安装完后,所有ember cli命令可直接在VS Code自己命令行列表中使用。)...Quokka.js(非常厉害调试工具,为JavaScript提供了快速构建原型演练场,并且附带有很好文档。) ? 2.

5.8K10

5 分钟温故知新 RxJS 【转换操作符】

这是我参与「掘金日新计划 · 4 月更文挑战」第2天,点击查看活动详情。 ---- RxJS 转换操作符,继续冲冲冲!...bufferWhen:收集值,直到关闭选择器发出值才发出缓冲值 使用方法大同小异,简单理解为:车站安检,人很多时候,就有专人在那设卡,控制流量,当设卡的人觉得在某个条件下可以了,就放卡,这里条件可以是...此时 bufferBy 会发出值以完成缓存。 将自上次缓冲以来收集所有值传递给数组。...reduce,它能将源 observalbe 值归并为单个值,当源 observable 完成时将这个值发出。...与 buffer 衍生也很像。 ---- OK,以上便是本篇分享,往期关于 RxJS 内容: 3 分钟温故知新 RxJS 创建实例操作符 你就是函数响应式编程(FRP)啊?!

59010

Vue 开发正确姿势:响应式编程思维

而狭义响应式编程通常指的是 rxjs 这类 “面向数据串流和变化传播声明式编程范式” 虽然 Vue 也是‘响应式编程’, 但是和 RxJS 是完全不一样概念,至少RxJS 是有范式约束,不管是编码上还是思维上面...有点异曲同工之妙吧 省市区选择器 再来看一个稍微复杂一点例子,常见省市区选择器,这是一个典型数据联动场景。...我们先来看一个反例吧,我们选择器需要先选择国家或地区,然后根据它来确定行政区域划分,接着渲染各级行政区域选择器: export default defineComponent({ props:...,实现是 国家-国家各种区域 选择器,比如选择了中国就会有 中国-省-市-区 这样分级。...这就意味着组件可以自己管理和销毁自己资源,不会泄露出去。 这是组件和 Hooks 是有本质区别的!

31320

9 个超实用 JavaScript 原生插件工具

非常轻量级包(5KB),有助于处理React应用程序中不可变状态,我们只需要通过不干扰原始状态来更改虚拟状态,然后,一旦所有更改完成,它就会推送下一个状态。...如果你需要记录你个人功能,那么jsdoc是一个很好工具。生成文件非常基础,用于文档目的,你可以在短时间内拥有自己功能文档。...实用JavaScript函数式 。 Ramda强调更纯粹函数风格,不变性和无副作用函数是其设计理念核心,帮助你用简洁优雅代码完成工作。...为 JavaScript 应用程序量身定制状态管理库。 在开始之前你需要知道RxJS风格observables以及基本TypeScript语法。...如果你正在使用 Angular 应用程序,建议使用 Akita,因为与ngrx和ngxs相比,它更容易。

1.2K20

Rxjs 响应式编程-第二章:序列深入研究

为了释放它们力量,我们必须知道将我们程序输入和输出转换为带有我们程序流程序列。 在我们弄清楚之前,我们将会遇到一些可以帮助我们开始操作序列基本operator。...即使用户尚未完成行走,我们也需要能够使用我们目前所知速度值进行计算。我们想要实时记录无限序列平均值。...问题是如果序列永远不会结束,像reduce这样聚合运算符将永远不会调用其ObserversonNext运算符。...5.订阅不会改变; 它像以前一样继续处理地震数据流。 始终有一种方法 到目前为止,我们已经使用了rx.all.js中包含RxJS运算符,但通常还是需要借鉴其他基于RxJS库附带运算符。...我们以声明方式表达了我们整个程序,而不必编码完成手头任务每一步。

4.1K20

RxJS实现“搜索”功能

这个时候,只能献祭出终极解决方案:本篇主角 —— RxJS 了,其实不止有 JS RxJS,与之对应还有,RxJava、RxAndroid、RxSwift,它们都是处理异步编程【核武器库】; RxJS...(若还不理解什么是防抖同学,可以将它理解为 LOL 中回程,按下 B 键,隔了几秒,才会真正回城回血,如果一直按 B ,则一直不会回城); pluck 选择属性来发出; 比如: const source...,则是提取点击 event.target.value switchMap switchMap 要重点理解下; 官方解释是:映射成 observable,完成前一个内部 observable,发出值。...没错,依然不好懂 ZZZ 不如,换个角度来解释: RxJS 中通常用【弹珠图】来表示“事件流”,比如 map api 弹珠图如下: switch api 弹珠图如下: 当发出一个新内部 Observable...即永远订阅最新Observable; 那么:switchMap = map + switch ,示意如下: 结合理解,在本篇搜索示例中,即用 Http.get(url) 所得 data 值作为事件流最新值

54310

深入浅出 RxJS 之 合并数据流

在数据流前面添加一个指定数据 startWith 只获取多个数据流最后产生那个数据 forkJoin 从高阶数据流中切换数据源 switch 和 exhaust 合并类操作符 RxJS 提供了一系列可以完成...Observable 对象不会完结,那排在后面的 Observable 对象永远没有上场机会。...1000, 1000).map(i => `C: ${i}`); const merged$ = source1$.merge(source2$, source3$, 2); source3$ 中数据永远不会获得进入...source1$ 是由 interval 产生数据流,是不会完结,但是 zip 产生 Observable 对象却在 source2$ 吐完所有数据之后也调用了 complete ,也就是说,只要任何一个上游...exhaust exhaust 含义就是“耗尽”,在耗尽当前内部 Observable 数据之前不会切换到下一个内部 Observable 对象。

1.6K10

Rxjs 响应式编程-第四章 构建完整Web应用程序

对于用户界面位,我们将使用RxJS-DOM库,这是由RxJS制作同一团队库,它提供了方便Operator来处理DOM和浏览器相关东西,这将使我们编程更简洁。...到目前为止,我们代码看起来很合理;我们有一个带有两个订阅Observable地震:一个在地图上绘制地震,另一个在表格中列出地震。 但我们可以使代码更有效率。...如果没有row,getRowFromEvent将不会尝试产生任何item。 更重要是,我们代码现在非常高效。...合并来自世界各地地震报告,而不仅仅是美国,并在地图中将它们全部展示在一起将会很有趣。 为此,您可以使用merge和mergeAll帮助,并使用distinct与选择器函数来避免重复。...这将涉及通过地震在服务器上对推文进行分组,并且您可能希望使用groupBy运算符将推文分组到特定地理区域。

3.6K10

【Appetite】ionic3实录(五)基本服务实现

前面章节基本把应用总体配置完成了,开始进入具体页面的开发,而这些离不开与数据交互、与用户反馈操作等。正所谓“兵马未动,粮草先行”,现在封装下基本服务。...angular/core'; import { Headers, RequestOptions } from '@angular/http'; import 'rxjs/add/operator/map...二、网络请求服务 ionic g provider common import 'rxjs/add/operator/retry'; import 'rxjs/add/operator/timeout...'; import 'rxjs/add/operator/delay'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/toPromise...因为数据接口服务往往不会只返回数据,还应带有请求信息,如获取数据为空,可以提示是系统问题、权限问题还是数据本就这样,所以封装了统一响应数据接口。

3.1K40
领券