问题标签 [rxjs]
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 - 并行运行异步任务
在 RxJS 中,当您想按顺序运行 http 请求时,您可以将它们链接起来。但我不清楚如何并行运行请求?我在http://reactive-extensions.github.io/learnrx/上的示例中看到他们使用 Observable.zip() 并行运行 2 个请求。但是你将如何并行运行 5 个请求呢?更具体地说,如何设置以便调用我的函数:
- 当所有 5 完成?
- 什么时候第一次完成?
javascript - 如何在 RxJS 中实现 time expiry hot observable(或在 Reactive Extensions 中通用)
我想用 RxJs 实现 Time Expiry 缓存。这是“正常”缓存的示例:
subscribe
第一次调用on时cachedData
,调用“heavy duty job”,2 秒后结果保存在cachedData
( AsyncSubject
) 中。任何其他后续subscribe
oncachedData
立即返回并保存结果(因此缓存实现)。
我想要实现的是在cachedData
有效的时间段内“调味”,当那个时间过去时,我想为新数据重新运行“繁重的工作”并再次缓存这个新的时间期等...
期望的行为:
我是 Rx(Js) 的新手,无法弄清楚如何通过冷却来实现这个热可观察对象。
javascript - BaconJS observable zip,示例属性映射失败
我正在尝试从 BaconJS生成zip 示例。但它不起作用。
c# - 为什么在这个 Suspendable 实现(“Rx Pausable”)中没有调用 OnCompleted?
我从Ollie Riches 的博客文章“尝试使用 Rx 实现更多功能”中阅读了以下内容,并与作者一样想知道:为什么OnCompleted没有通过?有人可以告诉这里发生了什么吗?也许是一些简单得令人尴尬的事情?
为方便起见,代码在此处进行了一些修改和复制(如果在这里撕掉他的代码是不可接受的,我向 Ollie 道歉):
为了记录,我正在考虑尝试生成一个可以暂停和停止的流,区别在于暂停流累积事件,暂停只是跳过它们。它开始看起来比我预期的要复杂一些,特别是如果有人想对暂停的位设置限制或“保存策略”。那好吧...
<edit:有趣的是,我刚刚注意到 Pausable 的RxJS 实现。
javascript - catch 和 onErrorResumeNext 的区别
catch
在 RxJS 中,Observable 实例的方法和方法之间似乎几乎没有区别,除了将原始 Observable 与 Observable 参数连接起来(无论是否发生错误onErrorResumeNext
)这一事实。onErrorResumeNext
如果是这样的话,是不是命名有点混乱?因为万一出现错误,onErrorResumeNext
其工作方式与以下方式完全相同catch
:
是否有充分的理由不总是使用catch
?
angularjs - $createObservableFunction 订阅者被覆盖
如果我使用 $createObservableFunction 方法创建了一个可观察对象,并且我多次订阅该可观察对象。最后一个订阅者覆盖任何其他订阅者。
但是,如果我使用 rx.Observable.interval() 创建一个 observable 并多次订阅它。两个订阅者都在间隔开火。
为什么?更重要的是如何让 $createObservableFunction 触发两个订阅者。
说明问题的示例 plunker。http://plnkr.co/edit/kXa2ol?p=preview
javascript - JavaScript 中的函数式反应式编程是否会导致更大的侦听器引用问题?
在 JavaScript 中,观察者模式经常被使用。它有一个棘手的问题,那就是主题保留观察者的参考。他们需要清理。对于常规应用程序,我使用以下经验法则:
- 如果对象的寿命短于(或等于)观察者,我可以这样做
subject.on('event', ...)
- 如果主题的寿命比观察者长,我需要使用
observer.listenTo(subject, 'event', ...)
在第二种情况下,listenTo
它知道观察者的生命周期,它会在观察者死亡时自动移除监听者。
在现代 SPA(单页应用程序)风格中,在任何时候只有部分应用程序处于活动状态,这变得非常重要。如果你将它与 Web 套接字结合起来,它是事件流的完美候选者,并且很可能长期存在,这变得更加重要。
使用 FRP,具有表示随时间变化的值的事件流之类的东西,我(不知道)创建了很多侦听器。每个filter
,map
并flatMap
创建一个新的流,该流与前一个流绑定(可能使用侦听器)。
在我看来,确定如何以及何时需要删除这些侦听器似乎非常棘手。我无法想象我是第一个考虑这个问题的人,但我在互联网上找不到太多关于这个问题的信息。
我见过一些其他语言的框架使用弱引用。JavaScript 没有弱引用的概念(WeakMap 在这里不可用)。即使有,这似乎也是一个坏主意,因为不清楚何时进行垃圾收集。
- 这在当前框架中是如何解决的?
- 框架是否与对象的生命周期相关联?如果是:如何?
rx-java - RxJs 中 Observable.expand() 的 RxJava 等价物是什么?
在 RxJs 中有一个称为 Observable.expand 的方法,它可以使用转换函数递归地扩展序列。
例如,
将发出所有整数
但是,我在 RxJava 中找不到这种方法。RxJava 中是否还有其他方法可以实现类似的目标?
有关 exapand() 的更详细规范,请参阅https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/expand.md
javascript - 在 RxJS 中基于异步加载的 DOM 创建流
我通过 ajax 调用加载了一组项目 - 这是我的初始 DOM:
通过 AJAX 调用,我从服务器加载了一些书籍,以 JSON 形式返回,以创建以下 DOM 结构:
这就是我执行 AJAX 调用的方式:
通过订阅responseStream
(并将 JSON 响应转换为 HTML),我将其添加到 DOM 中,如下所示:
现在,我要做的是附加一个用于点击<section class="book">
元素的流,这些元素已在从booksHTMLStream
. 我知道我可以在块中添加它,但这subscribe
让我想起了回调汤——我觉得我做事的方式不对。
我最初无法添加蒸汽,因为<section class="book">
页面加载时没有元素,因此流永远不会触发任何值。所以,我想知道是否可以将源异步添加到流中,或者是否有任何好的方法来完成我想要的,而不会变成混乱的回调式情况?
干杯:-)
gruntjs - 如何在 RxJS 中使用 Grunt Wiredep
RxJS 列出了 JavaScript 分发文件的几个 (35) 变体。
$ cat bower_components/rxjs/bower.json | jq '.main' | grep .js | wc -l
当wiredep执行时,所有(35)个文件路径都被注入到目标文件中,而我真的只想要其中一个文件。
我如何指定只注入一个?