问题标签 [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.

0 投票
4 回答
18573 浏览

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$,...)订阅并订阅sth1and sth2,我会看到两者的值相同sth吗?

  • 我认为Rx.fromEvent会产生冷的可观察量,但事实并非如此,正如其中一个答案中提到的那样。但是,我仍然对这种行为感到困惑:https ://codepen.io/anon/pen/NqQMJR?editors=101 。不同的订阅从同一个 observable 获得不同的值。活动不是click共享的吗?

0 投票
2 回答
1610 浏览

javascript - 范围内可观察到的随机数序列

如何使用rxjs observable在一个范围内创建一个可观察的随机数序列?

我可以使用range.

例如:

但是,我想让它连续为序列生成一个随机数,直到我强制它停止。只是迭代值直到它完成。

注意:我正在使用rxjs 5。哪个没有while.

0 投票
2 回答
26218 浏览

angular - 如何订阅一次事件发射器?

SomeComponent显示在/路线中。当我在我的应用程序中导航到不同的路线并再次返回时,SomeComponent将再次订阅该事件,导致回调触发两次。如何订阅一次事件或在组件销毁时取消订阅并再次订阅?

0 投票
1 回答
15460 浏览

javascript - 不同的 RxJS 主题的语义是什么?

该主题的文档很少,很难在那里找到“入口点”。

0 投票
1 回答
900 浏览

bower - 如何将 RxJS 5 添加为 bower 依赖项

在 GitHub页面上,只有 NPM 的说明。使用时 bower search rxjs,我只得到了 RxJS 4.x 结果。这是否意味着 RxJS 5.x 还没有被“bowerized”?

有没有办法做 ${subject}?

0 投票
2 回答
6047 浏览

angular - Angular 2 使用 RxJS 轮询

我正在尝试轮询 RESTful 端点以刷新我的实时聊天消息。我知道实时聊天的最佳方法是 Websockets,我只是想了解 RxJS 如何与 Angular 2 一起工作。

我想每秒检查一次新消息。我有以下代码:

但是我的 Typescript 转译器返回此错误:

'Observable<number>' 类型上不存在属性 'flatMapLatest'

我正在使用 RxJS 5.0.0-beta.0

如果我使用merge而不是flatMapLatest它根本不会调用 API。

0 投票
2 回答
6018 浏览

rxjs - 如何在 RxJs 5 中将 Subject 转换为 Observable

我们如何在 RxJs 5 中将 Subject 转换为 Observable?此功能很有用,例如,当我们想要公开订阅主题但不想让出next()对它的调用控制权,并且更愿意保持新值的发布为私有时。

文档(见这里)提到了这样的事情:

但是在 RxJs 5 中这目前不起作用(alpha 8),我们得到以下错误:

0 投票
1 回答
67 浏览

rxjs5 - RxJS5:如何一次性映射和过滤 - 就像 Scala 中的“收集”?

在我的 Scala 编码中,我发现该collect方法非常有用。它允许一个人一次性过滤和转换项目。

RxJS 中似乎没有这样的东西。我是否遗漏了一些明显的东西,或者它被认为是不必要的?

我做的帮手是微不足道的:

https://github.com/akauppi/svg.rx.js/blob/master/src/svg.rx.js#L27-L42

0 投票
2 回答
20690 浏览

javascript - RxJs 5 share() 操作符是如何工作的?

对我来说,RxJs 5share()运算符的工作原理并不是 100% 清楚,请参阅此处的最新文档。Jsbin 的问题在这里

如果我用一系列 0 到 2 创建一个 observable,每个值间隔一秒:

如果我为这个 observable 创建两个订阅者:

我在控制台中得到了这个:

我以为每个订阅都会订阅同一个 Observable,但似乎并非如此!就像订阅的行为创建了一个完全独立的 Observable!

但是如果将share()操作符添加到源 observable 中:

然后我们得到这个:

如果没有share().

这是怎么回事,share()操作员是如何工作的?每个订阅是否都会创建一个新的 Observable 链?

0 投票
2 回答
6447 浏览

javascript - RxJS 5 中的共享重播

根据 RxJS 5 MIGRATION.md,它看起来像是shareReplay()被删除了。

  1. 为什么?
  2. 是否.publishReplay(1).refCount()忠实地复制了行为?基本上我需要向任何新订阅者重播单个最新数据集。