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

0 投票
5 回答
4914 浏览

javascript - 并行运行异步任务

在 RxJS 中,当您想按顺序运行 http 请求时,您可以将它们链接起来。但我不清楚如何并行运行请求?我在http://reactive-extensions.github.io/learnrx/上的示例中看到他们使用 Observable.zip() 并行运行 2 个请求。但是你将如何并行运行 5 个请求呢?更具体地说,如何设置以便调用我的函数:

  • 当所有 5 完成?
  • 什么时候第一次完成?
0 投票
2 回答
3608 浏览

javascript - 如何在 RxJS 中实现 time expiry hot observable(或在 Reactive Extensions 中通用)

我想用 RxJs 实现 Time Expiry 缓存。这是“正常”缓存的示例:

subscribe第一次调用on时cachedData,调用“heavy duty job”,2 秒后结果保存在cachedData( AsyncSubject) 中。任何其他后续subscribeoncachedData立即返回并保存结果(因此缓存实现)。

我想要实现的是在cachedData有效的时间段内“调味”,当那个时间过去时,我想为新数据重新运行“繁重的工作”并再次缓存这个新的时间期等...

期望的行为:

我是 Rx(Js) 的新手,无法弄清楚如何通过冷却来实现这个热可观察对象。

0 投票
1 回答
64 浏览

javascript - BaconJS observable zip,示例属性映射失败

我正在尝试从 BaconJS生成zip 示例。但它不起作用。

示例 JSFiddle

0 投票
2 回答
223 浏览

c# - 为什么在这个 Suspendable 实现(“Rx Pausable”)中没有调用 OnCompleted?

我从Ollie Riches 的博客文章“尝试使用 Rx 实现更多功能”中阅读了以下内容,并与作者一样想知道:为什么OnCompleted没有通过?有人可以告诉这里发生了什么吗?也许是一些简单得令人尴尬的事情?

为方便起见,代码在此处进行了一些修改和复制(如果在这里撕掉他的代码是不可接受的,我向 Ollie 道歉):

为了记录,我正在考虑尝试生成一个可以暂停和停止的流,区别在于暂停流累积事件,暂停只是跳过它们。它开始看起来比我预期的要复杂一些,特别是如果有人想对暂停的位设置限制或“保存策略”。那好吧...

<edit:有趣的是,我刚刚注意到 Pausable 的RxJS 实现

0 投票
1 回答
10196 浏览

javascript - catch 和 onErrorResumeNext 的区别

catch在 RxJS 中,Observable 实例的方法和方法之间似乎几乎没有区别,除了将原始 Observable 与 Observable 参数连接起来(无论是否发生错误onErrorResumeNext)这一事实。onErrorResumeNext

如果是这样的话,是不是命名有点混乱?因为万一出现错误,onErrorResumeNext其工作方式与以下方式完全相同catch

是否有充分的理由不总是使用catch

0 投票
1 回答
396 浏览

angularjs - $createObservableFunction 订阅者被覆盖

如果我使用 $createObservableFunction 方法创建了一个可观察对象,并且我多次订阅该可观察对象。最后一个订阅者覆盖任何其他订阅者。

但是,如果我使用 rx.Observable.interval() 创建一个 observable 并多次订阅它。两个订阅者都在间隔开火。

为什么?更重要的是如何让 $createObservableFunction 触发两个订阅者。

说明问题的示例 plunker。http://plnkr.co/edit/kXa2ol?p=preview

0 投票
1 回答
1037 浏览

javascript - JavaScript 中的函数式反应式编程是否会导致更大的侦听器引用问题?

在 JavaScript 中,观察者模式经常被使用。它有一个棘手的问题,那就是主题保留观察者的参考。他们需要清理。对于常规应用程序,我使用以下经验法则:

  • 如果对象的寿命短于(或等于)观察者,我可以这样做subject.on('event', ...)
  • 如果主题的寿命比观察者长,我需要使用observer.listenTo(subject, 'event', ...)

在第二种情况下,listenTo它知道观察者的生命周期,它会在观察者死亡时自动移除监听者。

在现代 SPA(单页应用程序)风格中,在任何时候只有部分应用程序处于活动状态,这变得非常重要。如果你将它与 Web 套接字结合起来,它是事件流的完美候选者,并且很可能长期存在,这变得更加重要。

使用 FRP,具有表示随时间变化的值的事件流之类的东西,我(不知道)创建了很多侦听器。每个filter,mapflatMap创建一个新的流,该流与前一个流绑定(可能使用侦听器)。

在我看来,确定如何以及何时需要删除这些侦听器似乎非常棘手。我无法想象我是第一个考虑这个问题的人,但我在互联网上找不到太多关于这个问题的信息。

我见过一些其他语言的框架使用弱引用。JavaScript 没有弱引用的概念(WeakMap 在这里不可用)。即使有,这似乎也是一个坏主意,因为不清楚何时进行垃圾收集。

  • 这在当前框架中是如何解决的?
  • 框架是否与对象的生命周期相关联?如果是:如何?
0 投票
2 回答
1623 浏览

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

0 投票
2 回答
666 浏览

javascript - 在 RxJS 中基于异步加载的 DOM 创建流

我通过 ajax 调用加载了一组项目 - 这是我的初始 DOM:

通过 AJAX 调用,我从服务器加载了一些书籍,以 JSON 形式返回,以创建以下 DOM 结构:

这就是我执行 AJAX 调用的方式:

通过订阅responseStream(并将 JSON 响应转换为 HTML),我将其添加到 DOM 中,如下所示:

现在,我要做的是附加一个用于点击<section class="book">元素的流,这些元素已在从booksHTMLStream. 我知道我可以在块中添加它但这subscribe让我想起了回调汤——我觉得我做事的方式不对。

我最初无法添加蒸汽,因为<section class="book">页面加载时没有元素,因此流永远不会触发任何值。所以,我想知道是否可以将源异步添加到流中,或者是否有任何好的方法来完成我想要的,而不会变成混乱的回调式情况?

干杯:-)

0 投票
1 回答
232 浏览

gruntjs - 如何在 RxJS 中使用 Grunt Wiredep

RxJS 列出了 JavaScript 分发文件的几个 (35) 变体。

$ cat bower_components/rxjs/bower.json | jq '.main' | grep .js | wc -l

wiredep执行时,所有(35)个文件路径都被注入到目标文件中,而我真的只想要其中一个文件。

我如何指定只注入一个?