问题标签 [rxjs5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Hot and Cold observables:有“热”和“冷”运算符吗?
我回顾了以下 SO 问题: 什么是冷热观测值?
总结一下:
- 一个冷的可观察对象在它有一个观察者来消费它们时发出它的值,即观察者接收到的值的序列与订阅时间无关。所有观察者都将使用相同的值序列。
- hot observable 独立于其订阅发出值,即观察者接收到的值是订阅时间的函数。
然而,我觉得热与冷仍然是混乱的根源。所以这是我的问题:
默认情况下所有 rx 可观察对象都是冷的(主题除外)吗?
我经常读到事件是热可观察对象的典型隐喻,但我也读到这
Rx.fromEvent(input, 'click')
是冷可观察对象(?)。是否有/什么是 Rx 操作符将冷的 observables 变成热的 observables(除了
publish
, 和share
)?例如,它如何与 Rx 运算符一起使用
withLatestFrom
?让我们cold$
成为一个冷的 observable,它已经在某个地方被订阅了。会sth$.withLatestFrom(cold$,...)
成为热点观察者吗?或者如果我
sth1$.withLatestFrom(cold$,...), sth2$.withLatestFrom(cold$,...)
订阅并订阅sth1
andsth2
,我会看到两者的值相同sth
吗?我认为
Rx.fromEvent
会产生冷的可观察量,但事实并非如此,正如其中一个答案中提到的那样。但是,我仍然对这种行为感到困惑:https ://codepen.io/anon/pen/NqQMJR?editors=101 。不同的订阅从同一个 observable 获得不同的值。活动不是click
共享的吗?
javascript - 范围内可观察到的随机数序列
如何使用rxjs observable在一个范围内创建一个可观察的随机数序列?
我可以使用range
.
例如:
但是,我想让它连续为序列生成一个随机数,直到我强制它停止。不只是迭代值直到它完成。
注意:我正在使用rxjs 5。哪个没有while
.
angular - 如何订阅一次事件发射器?
SomeComponent
显示在/
路线中。当我在我的应用程序中导航到不同的路线并再次返回时,SomeComponent
将再次订阅该事件,导致回调触发两次。如何订阅一次事件或在组件销毁时取消订阅并再次订阅?
javascript - 不同的 RxJS 主题的语义是什么?
该主题的文档很少,很难在那里找到“入口点”。
bower - 如何将 RxJS 5 添加为 bower 依赖项
在 GitHub页面上,只有 NPM 的说明。使用时
bower search rxjs
,我只得到了 RxJS 4.x 结果。这是否意味着 RxJS 5.x 还没有被“bowerized”?
有没有办法做 ${subject}?
angular - Angular 2 使用 RxJS 轮询
我正在尝试轮询 RESTful 端点以刷新我的实时聊天消息。我知道实时聊天的最佳方法是 Websockets,我只是想了解 RxJS 如何与 Angular 2 一起工作。
我想每秒检查一次新消息。我有以下代码:
但是我的 Typescript 转译器返回此错误:
'Observable<number>' 类型上不存在属性 'flatMapLatest'
我正在使用 RxJS 5.0.0-beta.0
如果我使用merge而不是flatMapLatest它根本不会调用 API。
rxjs - 如何在 RxJs 5 中将 Subject 转换为 Observable
我们如何在 RxJs 5 中将 Subject 转换为 Observable?此功能很有用,例如,当我们想要公开订阅主题但不想让出next()
对它的调用控制权,并且更愿意保持新值的发布为私有时。
文档(见这里)提到了这样的事情:
但是在 RxJs 5 中这目前不起作用(alpha 8),我们得到以下错误:
rxjs5 - RxJS5:如何一次性映射和过滤 - 就像 Scala 中的“收集”?
在我的 Scala 编码中,我发现该collect
方法非常有用。它允许一个人一次性过滤和转换项目。
RxJS 中似乎没有这样的东西。我是否遗漏了一些明显的东西,或者它被认为是不必要的?
我做的帮手是微不足道的:
https://github.com/akauppi/svg.rx.js/blob/master/src/svg.rx.js#L27-L42
javascript - RxJs 5 share() 操作符是如何工作的?
对我来说,RxJs 5share()
运算符的工作原理并不是 100% 清楚,请参阅此处的最新文档。Jsbin 的问题在这里。
如果我用一系列 0 到 2 创建一个 observable,每个值间隔一秒:
如果我为这个 observable 创建两个订阅者:
我在控制台中得到了这个:
我以为每个订阅都会订阅同一个 Observable,但似乎并非如此!就像订阅的行为创建了一个完全独立的 Observable!
但是如果将share()
操作符添加到源 observable 中:
然后我们得到这个:
如果没有share()
.
这是怎么回事,share()
操作员是如何工作的?每个订阅是否都会创建一个新的 Observable 链?
javascript - RxJS 5 中的共享重播
根据 RxJS 5 MIGRATION.md,它看起来像是shareReplay()
被删除了。
- 为什么?
- 是否
.publishReplay(1).refCount()
忠实地复制了行为?基本上我需要向任何新订阅者重播单个最新数据集。